如何集成Joda-Time和Hibernate 4 / MySQL 5?

我一直想把我们的申请转移到Joda-Time.有几个挂断……

1-对于Hibernate 4.x应用程序来说,正式的Joda-Time集成here似乎已经过时了

2 – 建议的备选方案here似乎没有文档/入门信息.

3-I找不到我的数据库中哪些类型(MySql 5.5.11)很好地映射到Joda-Time等价物的好参考.

有没有人知道如何处理这些?

解决方法:

我使用您链接到的Jadira UserType库取得了一些成功.
在您的hibernate映射配置中,您可以通过将org.jadira.usertype.dateandtime.joda.PersistentDateTime类指定为’type’,将Joda DateTime属性映射到MySQL DATETIME或TIMESTAMP列.例如:

<class name="DateTestEntity" table="DATE_TEST">
    <id name="id" column="ID">
        <generator class="native" />
    </id>

    ...

    <property name="dateOfBirth" type="org.jadira.usertype.dateandtime.joda.PersistentDateTime" column="DATE_OF_BIRTH" />
</class>

我不确定其他MySQL和Joda-Time类型之间的映射,但是these Javadocs列出了可用于映射配置的类.

这就是您开始使用所需的一切.但是,关于时区,您需要考虑以下几点:

>我链接的Javadoc中列出的许多映射类都有
‘本地’等价物;例如PersistentLocalDateTime for
PersistentDateTime.
>在考虑时区时,UserType使用两个属性:jadira.usertype.databaseZone& jadira.usertype.javaZone. (看看this questionthis question,看看它们可以在哪里设置.)我不知道它们之间有什么区别,但是数据库区域似乎是最重要的一个,正如this question所示.

在我正在开发的项目中,我们希望以UTC(即GMT)存储所有日期,并且只在将它们显示给用户时将它们更改为特定的时区.到目前为止,我们在以下设置中没有遇到任何问题:

> MySQL服务器(以及我们的开发机器上的所有MySQL实例)已配置为使用UTC时区
>我们在Hibernate配置文件中使用PersistentDateTime而不是PersistentLocalDateTime
> jadira.usertype.databaseZone& jadira.usertype.javaZone都设置为UTC

如果您的应用程序需要处理国际日期,那么我建议您执行相同操作,或者尝试使用上述设置,直到您对应用程序的行为正确感到满意为止.

上一篇:java – 如何避免过多的休眠刷新到DB


下一篇:Centos Docker安装