我的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
作为变量类型。 最佳答案
尝试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>
下面来自休眠网站
支持使用Java8特定数据类型,例如域模型中的任何JSR 310日期/时间类型。
VersionType<Instant>
作为其中的一部分被添加,因此您可以根据需要使用它更新1
在H2 DB上检查
LocalDateTime
依赖项的hibernate-java8
上的版本注释,它起作用了