【问题标题】:What is the default value for Union in Java for Apache Avro?Apache Avro 的 Java 中 Union 的默认值是多少?
【发布时间】:2020-02-26 18:08:14
【问题描述】:

我正在尝试为字段设置默认值(使用 Java),但遇到了一个令人讨厌的异常:

线程“main”org.apache.avro.AvroTypeException 中的异常:字段优先的默认值无效:“Andy”不是 ["null","string"]

在 org.apache.avro.Schema.validateDefault(Schema.java:1542)

Apache Avro: Unions 的文档说:

如上所述,联合使用 JSON 数组表示。为了 例如,["null", "string"] 声明一个模式,它可以是 null 或字符串。

(请注意,当为记录字段指定默认值时,其 type 是一个 union,默认值的类型必须匹配第一个 工会的元素。因此,对于包含“null”的联合,“null” 通常首先列出,因为此类联合的默认值为 通常为空。)

谁能告诉我为什么默认值的类型必须匹配联合的第一个元素?

【问题讨论】:

    标签: java avro


    【解决方案1】:

    似乎您需要更改为 ["string","null"],因为默认值将是第一个,并且您的默认值是字符串。

    【讨论】:

      猜你喜欢
      • 2015-01-02
      • 1970-01-01
      • 2014-10-20
      • 2018-07-12
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      相关资源
      最近更新 更多