当前位置: 首页 > 知识库问答 >
问题:

Apache Avro的Union在Java的默认值是多少?

杨骏
2023-03-14

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

线程“main”org.apache.avro.avroTypeException中出现异常:字段First的默认值无效:“Andy”不是[“null”,“string”]

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

Apache Avro:Unions的文档说明:

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

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

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

共有1个答案

洪永长
2023-03-14

看来您需要更改为[“string”,“null”],因为default将是第一个,并且您的默认值是string。

 类似资料:
  • 问题内容: 当未设置相同名称的环境变量时,是否可以确保将GOMAXPROCS设置为1? 此代码显示值: 并像这样运行它: 显示在这种情况下为1,但我在这里寻找一些确认。 问题答案: UPDATE 2018: 默认情况下,Go程序在将GOMAXPROCS设置为可用内核数的情况下运行;在以前的版本中,它默认为1。 从Go 1.5开始,默认值为核心数。如果您在较新的Go版本中对此不满意,则只需要显式设置

  • 问题内容: http://selenium.googlecode.com/svn/trunk/docs/api/dotnet/html/M_OpenQA_Selenium_Chrome_ChromeDriver__ctor_4.htm 有人知道chromedriver commandtimeout的默认值是什么吗?做了谷歌搜索,但找不到任何东西。 问题答案: 记住Selenium是开源的。 您可以

  • 问题内容: 考虑一个名为的Java字符串字段。为类x创建对象时的初始值是多少? 我知道对于变量,在创建实例时将默认值分配为。但是会变成什么呢? 问题答案: 如果不执行任何操作,则将其初始化为null,所有引用类型也将初始化为null。

  • Kubernetes的pods(部署)活跃性和就绪性问题可以用这个初始延迟来配置----这意味着问题将在容器启动后的这多次发送之后开始。如果没有指定,默认值是多少?我好像找不到了。periodSeconds的默认值记录为10秒。 谢谢

  • 问题内容: 无法找到文档中的默认值 https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/query-dsl- minimum-should- match.html 是还是,还是取决于查询是否具有正义或上下文? 问题答案: 默认值取决于查询和上下文: :在查询上下文中且单独存在(否或) :在过滤器上下文中(例如,在查询

  • 问题内容: 由于对象的默认哈希值是该对象的对象地址,因此在32位计算机上,考虑哈希值是int值是有意义的。我的问题是在64位计算机上,地址应该是64位吗?那么32位int哈希值呢?是否会有一些下变频(从64位到32位)? 问题答案: 我的问题是64位JVM上对象的默认哈希值是多少?它仍然是对象地址值吗? 未指定“默认”值……或更具体地说,如何计算对象的“身份哈希码”。不在32位JVM或64位JVM