使用JPA或本机查询计算时间

时间:2017-12-15 16:39:32

标签: hibernate jpa jpql

我想使用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')

如果甚至支持,我无法找到有关如何添加/减去时间的文档。如何构建解锁查询?

1 个答案:

答案 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,