一尘不染

使用JPA2 / Hibernate持久化java.time.Instant(JDK8)

hibernate

JPA和Hibernate当前都不支持JDK8中JSR-310带来的新日期/时间类(JPA
票证,Hibernate
票证)。尽管如此,我还是希望使用JDK8日期/时间类进行编码,因为它们最终经过了精心设计。特别是,我对感兴趣java.time.Instant,而不是不完全支持所有java.time.*类型,因为我的所有实体都将使用此特定类(或者,所以我认为现在至少是:-)

一种选择是编写一个JPA 2.1定义的类型转换器。但是,我们的应用服务器是JBoss EAP 6.3,它与JPA
2.0兼容,但与2.1不兼容,因此暂时不存在此问题。

下一个选项是使用Hibernate用户类型(此处是有关转换其他JSR-310类的博客文章)。

有更好的选择吗?谢谢。


阅读 547

收藏
2020-06-20

共1个答案

一尘不染

在Hibernate 5.2及更高版本中,此问题已得到更全面的解决-您不再需要包含hibernate- java8Ipandzic注释中的依赖项,并且可以使用java.time.*诸如LocalDateTimeInstant不具有任何其他步骤的类。您也不再需要使用java.util.LocalDateTimeetc
标记列Temporal,这是您使用旧java.util.Date方法的方式。

从Hibernate 5.2开始,hibernate-java8内容已合并到hibernate-core
此处,查看更改说明。

2020-06-20