2014-01-14 28 views
0

我該如何判斷hibernate是否應該在postgres SQL數據庫中將Date創建爲Date,而不是將其作爲timestamp? 根據www.postgresql.org/docs/9.3/static/datatype-datetime.html日期應該是可以的,但是如何?如何讓hibernate在DB中創建日期而不是時間戳?

@Entity 
class Test { 
    private java.util.Date date; 
} 

變爲:

CREATE TABLE test 
(date timestamp without time zone) 
+0

我想你應該使用'java.sql.Date'。 –

回答

0

使用Temporal annotation

@Temporal(TemporalType.DATE) 
private Date date; 

也有TIMETIMESTAMPTemporalTypesTIMESTAMP是默認值。

編輯。您還可以使用其中一種適當的SQL類型:java.sql.Date,java.sql.Timejava.sql.Timestamp

的DB映射是相同的,不管你使用java.util.Date與使用註釋或java.sql.*java.util.Date爲您提供了一個一致的界面,無論物理DB映射,而SQL類型可以讓你的意圖更加清晰。

+1

這不是一個解決方案,當數據庫中使用時間戳時,hibernate會拋出異常'Found:timestamp,expected:date'。 – whatswrong

+0

註解不會修復您現有的DDL,它應該怎麼做?但是,在JPA實體生成DDL的過程中,它會告訴JPA提供者創建一個「DATE」列,這是OPs的要求。 – kostja

+0

@whatswrong - 恕我直言,你誤解了OP的要求,downvote是沒有根據的。你的問題是一個不同的問題,你可以發佈一個單獨的問題。如果您認爲我誤解了OP,請解釋一下。 – kostja

相關問題