2011-09-21 70 views

回答

1

您可以使用current_timestamp()HQL函數來實現該功能。

+0

嗨,安德烈,謝謝你的回覆。請你能給我這個功能的用法。現在我正在使用合併(實體)方法。 – reddy

0

經過長時間的R & D後,終於找到了在日期列中使用hibernate插入/更新數據庫SYSDATE(而不是應用程序服務器Date)的解決方案。希望它會幫助你,請查收爲上述

1的溶液)mapping.hbm.xml文件中添加額外的屬性如下面

property name="systemDate" formula="(select sysdate from dual)" 

2)添加getter和setter方法爲「systemDate」屬性在POJO類

private Date systemDate; 

public Date getSystemDate() { 
    return this.systemDate; 
} 

public void setSystemDate(Date systemDate) { 
    this.systemDate = systemDate; 
} 

3)在你的DAO,插入或更新日期列前,取systemDate屬性,並使用該值保存會話。

POJOclass Obj = new 

// the below line returns the database system date,because we had given the formula for this property in mapping.xml file 

Date systemDate= POJOclassObj.getSystemDate(); 

並將上述日期添加到您的列中。它會插入數據庫sysdate。

0

第一個(接受的)答案實際上不符合要求,因爲它將使用新的Date()。 OP的解決方案有效,但有點麻煩。當行被創建時,sysdate可以被指定爲列的默認值。對於更新,大多數DBA似乎都定義了一個更新列值的before觸發器。觸發器是有益的,因爲它可以防止規避規則。