可选字段的Avro maven插件

问题描述 投票:0回答:1

我正在使用Avro maven插件来处理一些Avro文件并生成Java类。我的目标是告诉插件,当字段接受空值时,通过声明类型为null,就生成 Optional getters。比如说

{
  "namespace": "br.com.gruposaga.core.event",
  "type": "record",
  "name": "UserEvent",
  "fields": [
    {
      "name": "id",
      "type": "int"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "email",
      "type": [
        "null",
        "string"
      ],
      "default": null
    }
  ]
}

所以,在上面提到的定义中,插件应该为id和name生成默认的getter。但是对于e-mail这个可以为空的字段,我希望插件只生成Optional getter。我尝试了插件中的gettersReturnOptional和createOptionalGetters两种配置,但都没有实现。那么,如何才能做到这一点呢?

java maven-plugin avro
1个回答
0
投票

我通过定制record.vm velocity模板来实现这一行为。替换

#if (${this.gettersReturnOptional})

#if ($field.schema().isNullable())

做到了这一点。

© www.soinside.com 2019 - 2024. All rights reserved.