在JPA中使用带有@Version注释的LocalDateTime

时间:2016-05-27 12:29:29

标签: java jpa java-8

我的Entity课程中包含以下字段:

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

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

created字段工作正常,因为我从AttributeConverterLocalDateTime实施了Timestamp

lastUpdated字段在部署到容器时出现以下错误:

java.lang.ClassCastException: org.hibernate.type.descriptor.converter.AttributeConverterTypeAdapter cannot be cast to org.hibernate.type.VersionType

我知道可以使用Timestamp作为lastUpdated的变量类型而非LocalDateTime来解决此问题。

我想知道是否可以覆盖@Version注释行为以接受LocalDateTime作为变量类型。

1 个答案:

答案 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依赖性,它有效