使用 JPA2/Hibernate 保留 java.time.Instant (JDK8)

2024-04-29

JPA 和 Hibernate 目前都不支持 JDK8 中 JSR-310 带来的新日期/时间类(JPAticket https://java.net/jira/browse/JPA_SPEC-63, 休眠ticket https://hibernate.atlassian.net/browse/HHH-8844)。尽管如此,我还是想使用 JDK8 日期/时间类进行编码,因为它们最终设计得很好。我特别感兴趣的是java.time.Instant,并不完全支持所有人java.time.*类型,因为我的所有实体都将使用这个特定的类(或者我现在认为,至少:-)

一种选择是写一个类型转换器 http://www.thoughts-on-java.org/2013/10/jpa-21-how-to-implement-type-converter.html,如 JPA 2.1 所定义。然而,我们的应用程序服务器是 JBoss EAP 6.3,它是 JPA 2.0,但不兼容 2.1,所以现在这是不可能的。

下一个选项是使用 Hibernate 用户类型(关于转换其他 JSR-310 类的博客文章here http://blog.progs.be/550/java-time-hibernate).

有更好的选择吗?谢谢。


使用 Hibernate 5.2.0+ 或对于早期的 Hibernate 5 添加以下依赖项:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-java8</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JPA2/Hibernate 保留 java.time.Instant (JDK8) 的相关文章

随机推荐