我一直在尝试升级我的 JHipster 5 应用程序以使用 Java 10,但我无法让它使用 Maven 编译和处理 JPA 静态元模型。
\n\n显然maven-compiler-plugin不是hibernate-jpamodelgen为了生成 JPA 静态元模型而触发。
为了升级项目,我有:
\n\n<java.version>10</java.version> 升级了 maven-compiler-plugin 以添加java.xml.bind模块(因为从 Java 10 开始默认不包含该模块),如下所示:
<plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-compiler-plugin</artifactId>\n <version>${maven-compiler-plugin.version}</version>\n <configuration>\n <!-- fork is needed so compiler args can be used -->\n <fork>true</fork>\n <compilerArgs>\n <arg>-J--add-modules</arg>\n <arg>-Jjava.xml.bind</arg>\n </compilerArgs>\n <annotationProcessorPaths>\n <path>\n <groupId>org.mapstruct</groupId>\n <artifactId>mapstruct-processor</artifactId>\n <version>${mapstruct.version}</version>\n </path>\n <!-- For JPA static metamodel generation -->\n <path>\n <groupId>org.hibernate</groupId>\n <artifactId>hibernate-jpamodelgen</artifactId>\n <version>${hibernate.version}</version>\n </path>\n\n </annotationProcessorPaths>\n …Run Code Online (Sandbox Code Playgroud)我需要在Avro架构中将'null'默认值添加到logicalType:'date'。我当前的定义是这样的:
{
"type": "record",
"namespace": "my.model.package",
"name": "Person",
"version": "1",
"fields": [
{"name":"birthday","type": { "type": "int", "logicalType": "date"}}
]
}
Run Code Online (Sandbox Code Playgroud)
当我用'birthday'字段填充时,org.joda.time.LocalDate它确实起作用,但是当我离开它时null,出现以下异常:
org.apache.kafka.common.errors.SerializationException: Error serializing Avro message
Caused by: java.lang.NullPointerException: null of int of my.model.package.Person
at org.apache.avro.generic.GenericDatumWriter.npe(GenericDatumWriter.java:145)
at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:139)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:75)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:62)
at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.serializeImpl(AbstractKafkaAvroSerializer.java:92)
at io.confluent.kafka.serializers.KafkaAvroSerializer.serialize(KafkaAvroSerializer.java:53)
at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:459)
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:436)
...
Run Code Online (Sandbox Code Playgroud)
我尝试了多种方法将此“ logicalType”配置为可为空,但无法使其正常工作。如何将该字段配置为可为空?