我正在使用hibernate。 db是oracle。我的要求是我需要使用sysdate插入/更新实体,而不是新的Date()。请帮我怎样实现这个目标?
谢谢!
答案 0 :(得分:1)
您可以使用current_timestamp()HQL函数来实现这一目标。
答案 1 :(得分:0)
经过漫长的研发后,终于找到了使用日期列中的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();
并将上述日期添加到您的列中。它将插入Database sysdate。
答案 2 :(得分:0)
第一个(接受的)答案实际上不符合要求,因为它将使用封面下的新Date()。 OP的解决方案有效,但有点麻烦。创建行时,可以将sysdate指定为列默认值。对于更新,大多数DBA似乎定义了更新列值的before触发器。触发器是有益的,因为它可以防止规避要求。