2012-10-18 25 views
0

我遇到了Oracle日期問題。插入OracleDB後,似乎Java應用程序中的預定義日期不同。通過JPA實體Oracle會覆蓋我的日期?

插入:

entity.setDateOfCreation(new Date(System.currentTimeInMillis())); 
// 1350565985000 

提交和檢索後:

entity.getDateOfCreation() // 1350565985047 

這是爲什麼不同?

我認爲Oracle會將具有這些精確毫秒的特定日期對象插入到數據庫中。但顯然它沒有。由於最小的延遲,它似乎用它自己的Date(以毫秒爲單位)「覆蓋」給定的日期(儘管我不使用@GeneratedValue)。

+0

你在哪裏看到結束85000的時間?並且是'DATE'或'TIMESTAMP'類型的數據庫列? –

+0

columntype是@Temporal(TemporalType.TIMESTAMP) – Malvin

+5

Oracle數據庫中實際列的數據類型是什麼?一個Oracle'DATE'不會存儲毫秒 - 一個Oracle'DATE'對第二個參數是精確的。你有沒有可能在你的問題上推翻了評論?如果'getDateOfCreation'返回一個值,其中毫秒全部爲0,而'setDateOfCreation'傳遞的值爲毫秒,那麼如果Oracle列的數據類型是'DATE',則這是可以解釋的。 –

回答

0

您使用的表是否具有填充該列的觸發器?我希望它能。我在最後經歷了很多問題,並且在應用程序服務器和數據庫之間存在時間差異。擁有一個確保整個州時間一致的單一時間會更好。

+0

你好,感謝你的參與。不,我看不到此表的任何觸發器。它應該是「乾淨」的。 – Malvin