我一直想轉移到喬達時間爲我們的應用程序一段時間。有幾個掛斷......如何整合Joda-Time和Hibernate 4/MySQL 5?
1的官方喬達整合時間here似乎是過時的對Hibernate 4.x的應用
2所建議的替代here似乎有零文檔/獲取開始信息。
3 - 我無法找到一個很好的參考,我的數據庫中的哪些類型(MySql 5.5.11)很好地映射到了Joda-Time等價物。
有沒有人有任何想法如何處理這些?
我一直想轉移到喬達時間爲我們的應用程序一段時間。有幾個掛斷......如何整合Joda-Time和Hibernate 4/MySQL 5?
1的官方喬達整合時間here似乎是過時的對Hibernate 4.x的應用
2所建議的替代here似乎有零文檔/獲取開始信息。
3 - 我無法找到一個很好的參考,我的數據庫中的哪些類型(MySql 5.5.11)很好地映射到了Joda-Time等價物。
有沒有人有任何想法如何處理這些?
我已經使用鏈接到的Jadira UserType庫取得了一些成功。 在您的休眠映射配置中,您可以通過將org.jadira.usertype.dateandtime.joda.PersistentDateTime
類指定爲「類型」,將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和喬達時類型,但these Javadocs名單可在映射配置中使用的類之間的映射。
這就是您開始使用所需的一切。 然而,有幾件事情你需要考慮有關時區:
許多我掛有 「本地」等價物的Javadoc列出的映射類的;例如PersistentLocalDateTime
for PersistentDateTime
。
UserType在考慮時區時有兩個屬性:jadira.usertype.databaseZone
& jadira.usertype.javaZone
。 (看看this question或this question看看它們可以設置在哪裏)我不知道它們之間有什麼區別,但是數據庫區似乎是this question似乎表明的最重要的一個。
在我對我們工作的項目要存儲在UTC(即GMT)的所有日期,並將它們顯示給用戶時,只有其更改爲特定的時區。到目前爲止,我們已經沒有任何問題,以下設置:
PersistentDateTime
爲反對PersistentLocalDateTime
在Hibernate的配置文件jadira.usertype.databaseZone
& jadira.usertype.javaZone
均設置爲UTC如果您的應用程序需要處理國際日期話,我建議你做相同,否則請嘗試上述設置,直到您滿意您的應用程序的行爲正確爲止。