AVRO Java 生成器 - 生成为 int 的日期

Wes*_*eso 2 java avro java-8 apache-kafka avro-tools

我正在使用 Maven 插件 avro-maven-plugin (1.9.2) 从 AVRO-schema-file (avsc) 生成 Java 类。我定义一个日期字段如下:

{
  "name": "inceptionDate",
  "type": "int",
  "logicalType": "date"
}
Run Code Online (Sandbox Code Playgroud)

我面临的问题是,它生成一个int而不是DateLocalDate

private int inceptionDate;
Run Code Online (Sandbox Code Playgroud)

pom.xml配置定义如下:

  <plugin>
    <groupId>org.apache.avro</groupId>
    <artifactId>avro-maven-plugin</artifactId>
    <version>1.9.2</version>
    <executions>
      <execution>
        <phase>generate-sources</phase>
        <goals>
          <goal>schema</goal>
        </goals>
        <configuration>
          <dateTimeLogicalTypeImplementation>JSR310</dateTimeLogicalTypeImplementation>
          <sourceDirectory>${project.basedir}/src/main/resources/schema/</sourceDirectory>
          <outputDirectory>${project.build.directory}/generated-sources/main/java/</outputDirectory>
          <stringType>String</stringType>
          <fieldVisibility>PRIVATE</fieldVisibility>
        </configuration>
      </execution>
    </executions>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

有什么想法吗,有什么问题吗?

gre*_*lea 5

您应该按如下方式定义日期字段:

{
  "name": "inceptionDate",
  "type": {
    "type": "int",
    "logicalType": "date"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 你是对的。请参阅我对问题的更新。它应该有效。 (2认同)