2011-12-21 230 views
0

我使用spring和hibernate開發一個簡單的在線拍賣系統。我創建了一個POJO「Items.java」包含了像數據變量:Spring,JPA和休眠問題

@Id 
@GeneratedValue 
@Column(name="item_id") 
private Integer itemId; 

@Column 
private String name; 

@Column 
private String summary; 

@Column 
private double price; 

@Column 
private String description; 

@Column(name="sDate", insertable=false, updatable=false, columnDefinition="timestamp default current_timestamp") 
@Generated(value=GenerationTime.INSERT) 
@Temporal(TemporalType.TIMESTAMP) 
private Date sDate; 

@Temporal(TemporalType.TIMESTAMP) 
private Date cDate; 

sDatecDate開始日期和分別截止日期。 sDate是自動插入的當前日期,並且cDate是由賣方通過表單輸入的截止日期。所以,我試圖通過使用JSP表單從賣家的輸入插入(名稱,彙總,價格,描述和關閉日期)到MySQL。除日期外,所有數據都會插入。數據庫中的日期值爲NULL。爲什麼這樣?

任何幫助將不勝感激。我搜索了很多這個問題,但無法得到解決方案。

回答

1

我認爲這是因爲您在日期的@Column註釋中有「Insertable = false」。

boolean insertable 
(Optional) Whether the column is included in SQL INSERT statements generated by the persistence provider. 
Default value: 
true 
Since: 
JPA 1.0 

編號:http://www.objectdb.com/api/java/jpa/Column

嘗試刪除它。

+0

嗨Thanx的答覆。但我說的是cDate而不是sDate。 sDate沒問題,當前時間戳會自動插入到mysql中,但是它的值是從jsp表單獲得的sDate(例如賣方輸入(名稱,彙總,價格,描述,出價截止日期),所以這個截止日期/ cDate不是被插入)。我想在從表單獲取數據的同時,日期值是字符串格式,並且沒有被轉換爲DATETIME格式,但我如何在Spring Controller類中將其轉換? – user1108823 2011-12-21 18:13:46

1

設置insertable=false時,必須以某種方式通過數據庫機制(如Oracle中的觸發器或默認值)提供此列的值。應用程序代碼不會爲您生成時間戳。