JPA和Hibernate当前都不支持JDK8中JSR-310带来的新日期/时间类(JPA 票证,Hibernate 票证)。尽管如此,我还是希望使用JDK8日期/时间类进行编码,因为它们最终经过了精心设计。特别是,我对感兴趣java.time.Instant,而不是不完全支持所有java.time.*类型,因为我的所有实体都将使用此特定类(或者,所以我认为现在至少是:-)
java.time.Instant
java.time.*
一种选择是编写一个JPA 2.1定义的类型转换器。但是,我们的应用服务器是JBoss EAP 6.3,它与JPA 2.0兼容,但与2.1不兼容,因此暂时不存在此问题。
下一个选项是使用Hibernate用户类型(此处是有关转换其他JSR-310类的博客文章)。
有更好的选择吗?谢谢。
在Hibernate 5.2及更高版本中,此问题已得到更全面的解决-您不再需要包含hibernate- java8Ipandzic注释中的依赖项,并且可以使用java.time.*诸如LocalDateTime或Instant不具有任何其他步骤的类。您也不再需要使用java.util.LocalDateTimeetc 标记列Temporal,这是您使用旧java.util.Date方法的方式。
hibernate- java8
LocalDateTime
Instant
java.util.LocalDateTime
Temporal
java.util.Date
从Hibernate 5.2开始,hibernate-java8内容已合并到hibernate-core 此处,查看更改说明。
hibernate-java8
hibernate-core