2013-03-21 82 views
3

我在我的項目中使用jadira usertype + joda時間。我正在使用hibernate + spring。 我的bean pojo使用Spring註解作爲@CreatedDate和org.springframework.data.jpa.domain.support.AuditingEntityListener,它在保存時自動在bean上設置創建日期。 我在歐洲/羅馬時區,但不幸在數據庫日期存儲爲UTC,而是當我顯示客戶端上的值(javafx)日期顯示在正確的時區。jadira usertype timezone

如何將數據存儲在db中的正確時區?

非常感謝。

回答

5

您需要設置屬性「jadira.usertype.databaseZone」。

要麼將​​其設置爲明確的時區,要麼將它設置爲「jvm」以使用JVM的默認時區。

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
p:jpaProperties-ref="jpaProps" /> 

<util:properties id="jpaProps"> 
    <prop key="hibernate.show_sql">true</prop> 
    <prop key="hibernate.format_sql">true</prop> 
    <prop key="jadira.usertype.autoRegisterUserTypes">true</prop> 
    <!-- defaults to storing UTC dates in DB otherwise --> 
    <prop key="jadira.usertype.databaseZone">jvm</prop> 
    <prop key="jadira.usertype.javaZone">jvm</prop> 
</util:properties> 
+0

爲了清楚起見 - 上述屬性可以添加到您正在設置hibernate屬性的任何地方,例如「hibernate.dialect」 – RedYeti 2013-08-14 17:34:20