我如何在hibernate中使用db sys date

时间:2011-07-14 15:50:34

标签: java database oracle hibernate date

我看到一个例子,人们建议使用下面的

<property name="lastActivityDate" type="timestamp" >        
    <column name="C2810_LAST_ACTIVITY_DATE" />
    <formula>select sysdate  from dual</formula>
 </property>

当我有fomula标记时,我的war文件没有部署,它表示属性映射的列数错误。但如果我删除它,那么工作正常。

我需要一种方法来将db sys日期作为列。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

经过漫长的研发后,终于找到了使用日期列中的hibernate插入/更新数据库SYSDATE(不是应用程序服务器日期)的解决方案。希望它能为您提供帮助,请找到上述解决方案

1)在mapping.hbm.xml文件中添加额外的属性,如下所示

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

2)为POJO类中的'systemDate'属性添加setter和getter

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();  and add the above Date to your columns. It will insert Database sysdate.