我看到了一个有人建议使用以下示例的示例

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


当我使用fomula标签时,我的war文件没有部署,它说属性映射的列数错误。但是,如果我删除它,erveything效果很好。

我需要一种获取db sys date列的方法。谁能帮我?

最佳答案

经过长时间的研发,终于找到了使用日期列中的休眠方式使用数据库SYSDATE(而非应用程序服务器日期)插入/更新的解决方案。希望对您有所帮助,请找到上述解决方案

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

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


2)在POJO类中为'systemDate'属性添加设置器和获取器

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.

10-06 08:08