2017-01-31 2 views
2

У меня возникли проблемы написания Avro схемы для типа java.math.BigDecimal, я попытался следующие:java.math.BigDecimal в Avro .avdl файл

  1. на основе Avro чиновника doc, я знаю, нужно самостоятельно определить логические типы для поддержки BigDecimal, но эта ссылка дает пример только в avsc, я пытаюсь понять это в avdl.
  2. Основываясь на Avro doc и это example, я написал ниже AVDL:

`

@namespace("test") 
protocol My_Protocol_v1 { 

    record BigDecimal { 
     @java-class("java.math.BigDecimal") string value; 
    } 

`

Но это не работает: Эта IDL схема отлично компилируется и может генерировать Java-класс BigDecimal, но я не могу использовать сгенерированный BigDecimal как java.math.BigDecimal, что не так? или Как мне это сделать?

Большое спасибо

ответ

1

ОК, так что я по электронной почте Apache Avro список DEV электронной почты и получил ответ от Doug Cutting (спасибо Doug).

I believe this has already been implemented but not yet released. 

It was implemented in: 

https://issues.apache.org/jira/browse/AVRO-1847

This is slated to be included in the 1.8.2 release, which should soon be out. 
0

Просто, чтобы пролить свет на то, как он работает в новой версии:
Мы только начали использовать RC4 из 1.8.2 и вы можете создать BigDecimal поля со следующим синтаксисом:

record Thing { 
    decimal(10,2) foo; 
} 

Класс Thing будет иметь BigDecimal имущество foo с точностью 10 и шкалой 2.

Смежные вопросы