我的Entity类中包含以下字段:

@Version
@Column(name = "updated")
private LocalDateTime lastUpdated;

@Column(name = "created")
private LocalDateTime created;


created字段工作正常,因为我实现了从AttributeConverterLocalDateTimeTimestamp

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上的版本注释,它起作用了

10-06 14:47