2013-03-04 102 views
1

我爲我的日期/時間對象使用Joda庫和jadira userType項目通過Hibernate在我的MySQL數據庫中保存這些東西。Jadira UserType library JavaTimeZoneWorkaroundHelper

當運行應用程序,我得到

4 mars 2013 18:48:18 org.jadira.usertype.spi.reflectionutils.JavaTimeZoneWorkaroundHelper <clinit> 
ATTENTION: Under JDK 6 it may not be possible to handle DST transitions correctly 
4 mars 2013 18:48:18 org.jadira.usertype.spi.reflectionutils.JavaTimeZoneWorkaroundHelper <clinit> 
GRAVE: Running under a Zone that uses daylight saving time. To avoid incorrect datetimes being stored during DST transition, either update to JDK 7 or use a Timezone for the JDK without Daylight Saving Time 

因此,從文本我有兩個選擇: - 安裝JDK 7,我不想做(我在Mac OS 10.6。 8,我也不想使用「太近」的java版本) - 使用沒有DST的時區。這意味着我必須將我的JVM的默認TimeZone設置爲像俄羅斯或南美某個位置的位置。

  • 我可以簡單地禁用Jadira的JavaTimeZoneWorkaroundHelper功能嗎?怎麼樣 ?

  • 我想到另一種選擇:不要使用jadira提供的東西(將joda對象轉換爲字符串以及將字符串轉換爲joda對象)並自己完成轉換。

你有什麼建議? 謝謝

回答

0

您可以顯式設置用於獨立於您的應用運行的機器進行映射的java和數據庫時區。通常,將數據庫中的UTC時區存儲日期和時間是一種很好的做法。試試如果這能解決你的問題。

@TypeDef(name = "myDateTime", 
      typeClass = org.jadira.usertype.dateandtime.joda.PersistentDateTime.class, 
     parameters = {@Parameter(value="UTC", name="databaseZone"), 
        @Parameter(value="UTC", name="javaZone")}) 
+0

這不起作用。我使用-Duser.timezone =「GMT」設置了JVM參數,而不是 – facewindu 2013-03-04 21:17:56

+0

GMT和UTC實際上是相同的,至少對於除科學計時以外的所有其他參數都足夠接近。請參閱Wikipedia條目:http://en.wikipedia.org/wiki/Coordinated_Universal_Time – RedYeti 2013-08-14 11:39:27

0

如果添加此@TypeDef到package-info.java文件, 並添加@Type(NAME =「myDateTime」),以應該有這種類型的屬性,它完美的作品。

0

由於此問題已創建,所以創建了刪除消息的更新版本的usertype庫。所以如果你使用3.2.0.GA in maven central這樣的最新版本。它解決了這個問題。

相關問題