我想使用Hibernate current_timestamp()
根据数据库时间向列写一个时间戳。我想使用数据库时间,而不是使用数据库的服务系统的系统时间。我使用数据库时间进行两次查询,锁定和解锁。
锁定查询
UPDATE MyEntity e SET e.lock = current_timestamp() WHERE e.id = :id
解锁查询
UPDATE MyEntity e SET e.lock = (current_timestamp() - "30 seconds") WHERE e.id = :id
我的最后一招是使用PostgreSQL的本机查询,如下所示:
SELECT CURRENT_TIMESTAMP < (CURRENT_TIMESTAMP + INTERVAL '30 second')
如果甚至支持,我无法找到有关如何添加/减去时间的文档。如何构建解锁查询?
答案 0 :(得分:2)
将列的默认值设置为(特定于数据库的)当前时间值。 使用MySql, 该列看起来像这样:
column_name DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
修改强>
以下示例(MySql)将在每次更新行时更新datetime列:
last_update DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,