如何在hibernate中使用sysdate插入/更新?

时间:2011-09-21 11:58:32

标签: hibernate

我正在使用hibernate。 db是oracle。我的要求是我需要使用sysdate插入/更新实体,而不是新的Date()。请帮我怎样实现这个目标?

谢谢!

3 个答案:

答案 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触发器。触发器是有益的,因为它可以防止规避要求。