我正在使用jadira usertype用於使用Hibernate 4的joda時間。我需要使用jvm日期時間進行存儲和檢索。問題是讀回的日期有2小時的偏移量。我們在UTC + 2。日期在數據庫中正確存儲。該數據庫是MySQL的5。我設置databaseZone和javaZone在全球範圍內我會出廠配置如下:jadira usertype joda time從數據庫中返回不正確的datetime
<prop key="jadira.usertype.autoRegisterUserTypes">true</prop>
<prop key="jadira.usertype.databaseZone">jvm</prop>
<prop key="jadira.usertype.javaZone">jvm</prop>
數據庫本身配置了時區SAST。通過上述配置,例如2008-01-01的日期存儲在數據庫中,並且讀取爲2007-12-31T22:00:00.000 + 02:00。
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime",
parameters = { @Parameter(name = "databaseZone", value = "jvm"),
@Parameter(name = "javaZone", value = "jvm")})
如果我在數據庫上運行下面的查詢,
SELECT version() , @@time_zone , @@system_time_zone , NOW() , UTC_TIMESTAMP();
我得到的結果:
我一直在使用註解如下,但具有相同的結果也試過這種沒有全局配置version : 5.5.13
@@time_zone : SYSTEM
@@system_time_zone : South Africa Standard Time
NOW() : 2013-04-03 14:33:12
UCT_TIMESTAMP() : 2013-04-03 12:33:12
我在這裏錯過了什麼。據我所知,從使用類型和焦特達,我的配置是正確的。
它看起來像讀取時,數據庫返回UCT,在我的案例日期-2。設置 jvm 應該將其轉換爲jvm時區,但此設置似乎不起作用。除非jdbc驅動程序在某處做了些奇怪的事情? –
Travers