JPA 对 Java 8 新日期和时间 API 的支持

2022-08-31 16:50:18

我正在使用Java 8进行我的新项目。

我正在尝试在java 8中使用新的日期和时间API,但是我不知道是否完全支持这个新的日期和时间API。JPA 2.1

请分享您在JPA支持Java 8中新日期和时间API的经验/意见。

我可以在 Java 8 中安全地使用新的日期和时间 API 与 JPA 2.1 吗?

更新:

我使用Hibernate(4.3.5.Final)作为JPA实现。


答案 1

对于休眠 5.X,只需添加

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-java8</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

@NotNull
@Column(name = "date_time", nullable = false)
protected LocalDateTime dateTime;

无需任何额外努力即可工作。查看 https://hibernate.atlassian.net/browse/HHH-8844

更新:

请看一下Jeff Morin的评论:由于Hibernate 5.2.x就足够了

 <dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-core</artifactId>
     <version>5.2.1.Final</version>
 </dependency>
 <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-...</artifactId>
     <version>4.3.1.RELEASE</version>
 </dependency>

请参阅 https://github.com/hibernate/hibernate-orm/wiki/Migration-Guide---5.2并将Hibernate 5.2与Spring框架4.x集成


答案 2

JPA 2.1 是在 Java 1.8 之前发布的规范,因此不强制要求对它的任何支持。显然,某些实现可能支持某些 Java 1.8 功能。有些在Java 1.8字节码(例如EclipseLink)方面存在问题。我知道DataNucleus支持java.time和Java 1.8,因为这是我使用的那个。您必须检查您的实现的支持级别。

已请求 JPA 2.2 支持 java.time 类型,请参阅此问题 https://java.net/jira/browse/JPA_SPEC-63


推荐