Hibernate current_timestamp()
を使用して、データベースの時間に基づいて列にタイムスタンプを書きたいとします。私は、データベースを使用する私のサービスのシステムのシステム時間ではなく、データベース時間を使用したい。私は2つのクエリのためにデータベース時間を使用していますとロックを解除する。JPAまたはネイティブ・クエリーで時間を計算する
ロッククエリ
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')
時間を追加/減算する方法については、サポートされている場合でもドキュメントを見つけることができません。 クエリのロックを解除するにはどうすればよいですか?
Afaikまだサポートされていません... jpa 2.1では、特定のdb関数を呼び出すためにFUNC( 'functionName'、args)が導入されましたが、依然として明らかにdbに依存しています – Zeromus
ちょうどメモ:Utcを使用するためにサービスとデータベースの両方を設定して、頭痛をたくさん守ってください – Zeromus
ありがとうございます。私たちはどこでもUTCを使用していますが、私はまだ別のインスタンスが別のクロックにあることを心配しています。 – span