我的Entity
课程中包含以下字段:
@Version
@Column(name = "updated")
private LocalDateTime lastUpdated;
@Column(name = "created")
private LocalDateTime created;
created
字段工作正常,因为我从AttributeConverter
到LocalDateTime
实施了Timestamp
。
lastUpdated
字段在部署到容器时出现以下错误:
java.lang.ClassCastException: org.hibernate.type.descriptor.converter.AttributeConverterTypeAdapter cannot be cast to org.hibernate.type.VersionType
我知道可以使用Timestamp
作为lastUpdated
的变量类型而非LocalDateTime
来解决此问题。
我想知道是否可以覆盖@Version
注释行为以接受LocalDateTime
作为变量类型。
答案 0 :(得分:1)
尝试hibernate-java8
依赖,即支持java 8特定数据类型。
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-java8 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>5.1.0.Final</version>
</dependency>
以下来自hibernate网站
支持使用Java8特定数据类型,例如域模型中的任何JSR 310日期/时间类型。
VersionType<Instant>
作为其中的一部分添加,因此您可以将其用于您的要求
更新1
在LocalDateTime
上检查版本注释,并且对H2 DB具有hibernate-java8
依赖性,它有效