Berechne Zeit mit JPA oder nativer Abfrage

9

Ich möchte Hibernate current_timestamp() verwenden, um einen Zeitstempel basierend auf der Datenbankzeit zu einer Spalte zu schreiben. Ich möchte die Datenbankzeit verwenden, nicht die Systemzeit des Systems meines Dienstes, der die Datenbank verwendet. Ich verwende die Datenbankzeit für zwei Abfragen, Sperren und Entsperren .

Abfrage sperren

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

Abfrage entsperren

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

Mein letzter Ausweg ist, eine native Abfrage für PostgreSQL wie folgt zu verwenden:

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

Ich kann die Dokumentation zum Hinzufügen / Entfernen von Zeit nicht finden, wenn diese sogar unterstützt wird. Wie kann ich die Entsperren Abfrage erstellen?

    
span 15.12.2017, 16:39
quelle

1 Antwort

2

Setzen Sie den Standardwert der Spalte auf den (Ihrer datenbankspezifischen) aktuellen Zeitwert. Mit MySql, Die Spalte würde so aussehen:

%Vor%

Bearbeiten

Hier ist ein Beispiel (MySql), das die Datetime-Spalte jedes Mal aktualisiert, wenn die Zeile aktualisiert wird:

%Vor%     
DwB 18.12.2017 21:21
quelle

Tags und Links