我正在使用Hibernate在內存數據庫中的H2上編寫測試代碼。我有兩個項目幾乎完全相同的配置。在每個測試代碼中,模型類自動構建數據庫模式。這兩個類定義的數據類型相同的方式:Hibernate在時態返回類型中不一致(日期與時間戳)
@Temporal(TemporalType.TIMESTAMP)
@Column("MY_DATE")
private java.util.Date myDate;
從Hibernate的調試日誌,我可以看到創建的列是同一類型的兩個項目:
create table MY_TABLE (
...
MY_DATE timestamp,
...
)
測試模型總是給定類型java.sql.Date
的對象出於某種原因,但是,在一個項目中,當我和一個Hibernate查詢檢索數據,類型爲java.sql.Date
,而在其他的項目,它是java.sql.Timestamp
。
什麼可能導致這種行爲差異,以及如何一致地將此數據作爲java.sql.Date
?
(請記住,我只測試代碼的控制,我不能改變應用代碼。)
Upvoted爲LocalDateTime'的'的建議或分區等同。如果你正在使用Java 6或7,有人說今天[java.time的後端](http://www.threeten.org/threetenbp/)是比Joda-Time更好的選擇。 –
Upvoted因爲它把我放在正確的軌道上。儘管在應用程序代碼中,人們只想引用java.util.Date,但在測試代碼中這是不可能的。我需要使用'.equals'來比較從Hibernate返回的日期,'Timestamp.equals'對於'Date'的實例返回false,即使它們具有相同的毫秒值。除非我在這裏失去了一些東西,那就是。 – ds390s