JPA和Hibernate目前都不支持JSR-310在JDK8中带来的新日期/时间类(JPA ticket,Hibernate ticket)。尽管如此,我还是希望使用JDK8日期/时间类进行编码,因为它们最终设计得很好。特别是,我对java.time.Instant
感兴趣,并不完全支持所有java.time.*
类型,因为我的所有实体都会使用这个特定的类(或者我现在认为,至少:-)
一种选择是编写type converter,如JPA 2.1所定义。但是,我们的应用服务器是JBoss EAP 6.3,它是JPA 2.0但不兼容2.1,所以现在这是不可能的。
下一个选项是使用Hibernate用户类型(关于转换其他JSR-310类here的博客文章)。
有更好的选择吗?感谢。
答案 0 :(得分:19)
使用Hibernate 5.2.0+或者对于早期的Hibernate 5添加以下依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>${hibernate.version}</version>
</dependency>
答案 1 :(得分:6)
参见ThreeTen home page,其中提到了三个不同的JPA库:
答案 2 :(得分:6)
在Hibernate 5.2之后,此问题得到了更充分的解决 - 您不再需要在Ipandzic的评论中包含hibernate-java8
依赖关系,您可以使用java.time.*
类LocalDateTime
}或即时没有任何额外的步骤。您也不需要使用java.util.LocalDateTime
等标记列作为Temporal
了,就像使用旧的java.util.Date
方法一样。
自Hibernate 5.2起,hibernate-java8
内容已合并到hibernate-core
see the change notes here