我正在使用带休眠的spring。我的数据库是oracle。我想用sysdate更新/保存记录。我们可以使用HQL插入/更新sysdate。但我不知道如何使用Criteria插入sysdate。请帮帮我。
谢谢!
答案 0 :(得分:1)
在HQL插入/更新语句中使用sysdate
似乎没有直接的方式。您可以在HQL选择中使用current_timestamp()
函数,但不能在update / insert中使用。
关于您是否需要在某些隔离情况下进行此更新,或者此列始终在插入/更新实体时总是具有数据库日期的问题尚不明确。
如果它是您需要的隔离更新:您可以通过@Formula
(value="select sysdate from dual")
在您的实体中定义一个始终保持sysdate的属性来解决此问题。如果此属性名为sysdate
,则可以通过执行update MyEntity e set e.myDate = e.sysdate
来实现此目的。考虑到这种方法引入了对Oracle的直接依赖。
如果要在实体更新时始终使用数据库的时间戳更新列,请在其注释中使用@UdoFholl pointed out方法,或使用触发器(如果有的话)对数据库的控制级别)并使用@Generated
注释该字段。