Calcular tempo com JPA ou consulta nativa

9

Eu quero usar o Hibernate current_timestamp() para gravar um registro de data e hora com base no horário do banco de dados em uma coluna. Eu quero usar o tempo do banco de dados, não a hora do sistema do sistema do meu serviço que usa o banco de dados. Estou usando o tempo do banco de dados para duas consultas, Bloquear e Desbloquear .

Consulta de bloqueio

UPDATE MyEntity e SET e.lock = current_timestamp() WHERE e.id = :id

Desbloquear consulta

UPDATE MyEntity e SET e.lock = (current_timestamp() - "30 seconds") WHERE e.id = :id

Meu último recurso é usar uma consulta nativa para o PostgreSQL assim:

SELECT CURRENT_TIMESTAMP < (CURRENT_TIMESTAMP + INTERVAL '30 second')

Não consigo localizar a documentação sobre como adicionar / subtrair a hora, mesmo que seja suportada. Como posso criar a consulta Desbloquear ?

    
por span 15.12.2017 в 17:39
fonte

1 resposta

2

defina o valor padrão da coluna para o valor currenttime (específico do banco de dados). Com o MySql, a coluna ficaria assim:

column_name DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

Editar

Aqui está um exemplo (MySql) que atualizará a coluna datetime toda vez que a linha for atualizada:

last_update DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
por DwB 18.12.2017 / 22:21
fonte