Java 在JPA中使用带有@Version注释的LocalDateTime
我的Java 在JPA中使用带有@Version注释的LocalDateTime,java,jpa,java-8,Java,Jpa,Java 8,我的实体类中有以下字段: @Version @Column(name = "updated") private LocalDateTime lastUpdated; @Column(name = "created") private LocalDateTime created; 创建的created字段工作正常,因为我实现了一个AttributeConverter从LocalDateTime到Timestamp 部署到容器时,lastUpdated字段给出以下错误: java.lang.Cl
实体
类中有以下字段:
@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
dependency,它支持特定于java8的数据类型
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-java8 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>5.1.0.Final</version>
</dependency>
org.hibernate
hibernate-java8
5.1.0.1最终版本
下面来自hibernate网站
支持使用Java8特定的数据类型,如域模型中的任何JSR 310日期/时间类型。
VersionType
是作为这一部分添加的,因此您可以将其用于您的需求
更新1
使用H2 DB上的
hibernate-java8
依赖项检查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>
org.hibernate
hibernate-java8
5.1.0.1最终版本
下面来自hibernate网站
支持使用Java8特定的数据类型,如域模型中的任何JSR 310日期/时间类型。
VersionType
是作为这一部分添加的,因此您可以将其用于您的需求
更新1
检查了
LocalDateTime
上的版本注释以及对h2db的hibernate-java8
依赖关系,它起了作用我认为我们不能在LocalDateTime上使用版本注释。注释版本字段支持的数据类型为int、Integer、short、short、long、long、java.sql.Timestamp。是的,我知道。问题是@Version
注释的行为是否是可重写的,因此它将接受LocalDateTime
。您是否尝试使用依赖项hibernate-java8
?下面是hibernate文档对使用Java8特定数据类型的支持,如域模型中的任何JSR 310日期/时间类型
否,我不知道该库。我一定会尝试的。用例是什么?这是一个私人领域。您不能只使用Timestamp,并通过public LocalDateTime getlastUpdated(){return Timestamp.toLocalDateTime()}将其公开给此类的客户端吗;我认为我们不能在LocalDateTime上使用版本注释。注释版本字段支持的数据类型为int、Integer、short、short、long、long、java.sql.Timestamp。是的,我知道。问题是@Version
注释的行为是否是可重写的,因此它将接受LocalDateTime
。您是否尝试使用依赖项hibernate-java8
?下面是hibernate文档对使用Java8特定数据类型的支持,如域模型中的任何JSR 310日期/时间类型
否,我不知道该库。我一定会尝试的。用例是什么?这是一个私人领域。您不能只使用Timestamp,并通过public LocalDateTime getlastUpdated(){return Timestamp.toLocalDateTime()}将其公开给此类的客户端吗;更新答案和测试结果更新答案和测试结果