java.math.BigDecimal到Avro .avdl文件

时间:2017-01-31 23:22:18

标签: java avro bigdecimal avro-tools

我在编写java.math.BigDecimal类型的Avro架构时遇到了问题,我尝试了以下操作:

  1. 基于Avro官方doc,我知道我需要自己定义逻辑类型以支持BigDecimal,但该链接仅在avsc中提供示例,我试图在avdl中找出它。
  2. 基于Avro doc和此example,我在下面写了avdl:
  3. `

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

    `

    但是它不起作用: 这个IDL模式编译得很好并且可以生成一个名为BigDecimal的Java类,但是我不能真正使用生成的BigDecimal作为java.math.BigDecimal,这是什么错误的?或者我该怎么做?

    非常感谢

3 个答案:

答案 0 :(得分:1)

好的,所以我通过电子邮件发送了Apache Avro dev电子邮件列表并得到了Doug Cutting的回复(非常感谢Doug)。

  

我相信这已经实施但尚未发布。

     

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

中实施的      

这将被包含在1.8.2版本中,该版本即将发布。

答案 1 :(得分:0)

只是为了阐明它在新版本中的运作方式:
我们刚开始使用Thing的rc4,您可以使用以下语法创建BigDecimal字段:

BigDecimal

foo类将拥有stopPropagation()属性<input type="text" readOnly onClick={(e) => {e.stopPropagation(); console.log('click input');}} /> {/*<--- works fine without this line */} ,其精度为10,比例为2.

答案 2 :(得分:0)

即使编译器版本已更改为1.8.2版本,

decimal(10,2)也不在avsc模式中生成十进制数据类型。