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

spa*_*pan 9 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')

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

DwB*_*DwB 2

将列的默认值设置为(特定于您的数据库的)当前时间值。使用 MySql,该列将如下所示:

column_name DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

编辑

下面是一个示例(MySql),每次更新行时都会更新日期时间列:

last_update DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
Run Code Online (Sandbox Code Playgroud)