Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JPA中使用带有@Version注释的LocalDateTime_Java_Jpa_Java 8 - Fatal编程技术网

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()}将其公开给此类的客户端吗;更新答案和测试结果更新答案和测试结果