2011-04-11 88 views
4

我的應用程序已經使用Joda時間進行日期操作,並計劃在不久的將來升級到jsr 310。在數據庫中存儲joda時間日期時間

現在我需要在數據庫中使用jpa 2和hibernate存儲非常準確的時間戳,但java.util.Date不存儲毫秒值。

我發現UserType和配置我的EntityBean這樣

@Column(name = "TRANSACTION_TIME") 
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime") 
private DateTime transactionTime; 

,但它仍然不存儲毫秒。

我通過了這個2010-11-02 12:02:54.945但是當我檢索它時,它是2010-11-02 12:02:54.000

我還需要做什麼才能獲得存儲的毫秒數以及可能的時區?

UPDATE 我剛剛檢查過,毫秒數實際上使它到數據庫,但Hibernate不包括它在返回的結果。相同的格式化程序會打印出兩個結果,因此無法格式化問題

+0

某些數據存儲區不會將毫秒存儲在DATETIME列中。使用大數字將其作爲數字進行存儲 – DataNucleus 2011-04-11 09:41:40

+0

您正在使用哪種DBMS? – 2011-04-11 10:13:11

+0

我正在使用oracle – 2011-04-11 12:02:51

回答

5

這可能不是您想要的,但您可以將時間存儲爲數字(= epoch以來的毫秒數)而不是日期時間字段。

+0

+1一個'long'爲您提供了精確性,易於映射,並且時區應該存儲在任何地方。 – 2011-04-11 12:09:00