我使用您链接到的Jadira UserType库取得了一些成功.在您的hibernate映射配置中,您可以DateTime通过将org.jadira.usertype.dateandtime.joda.PersistentDateTime类指定为"类型" 来将Joda 属性映射到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>
Run Code Online (Sandbox Code Playgroud)
我不确定其他MySQL和Joda-Time类型之间的映射,但是这些Javadoc列出了可用于映射配置的类.
这就是您开始使用所需的一切.但是,关于时区,您需要考虑以下几点:
Javadoc I链接中列出的许多映射类都具有"本地"等价物; 如PersistentLocalDateTime对
PersistentDateTime.
在考虑时区时,UserType使用两个属性:jadira.usertype.databaseZone&jadira.usertype.javaZone.(看看这个问题或这个问题,看看它们可以在哪里设置.)我不知道它们之间有什么区别,但是数据库区域似乎是最重要的一个,因为这个问题似乎表明了这一点.
在我正在开发的项目中,我们希望以UTC(即GMT)存储所有日期,并且只在将它们显示给用户时将它们更改为特定的时区.到目前为止,我们在以下设置中没有遇到任何问题:
PersistentDateTime而不是PersistentLocalDateTime在Hibernate配置文件中jadira.usertype.databaseZone&jadira.usertype.javaZone都设置为UTC如果您的应用程序需要处理国际日期,那么我建议您执行相同操作,或者尝试使用上述设置,直到您对应用程序的行为正确感到满意为止.
| 归档时间: |
|
| 查看次数: |
1645 次 |
| 最近记录: |