Open1

@UpdateTimestampをつけているのに更新日が更新されない

ふじしろふじしろ

発生したこと

更新日時を表すカラムに@UpdateTimestampを付与しているにもかかわらず、
saveメソッドを実行してもテーブルの更新日時が更新されない

状況

  • 更新日時だけを更新したい。
    • 従って、更新日時以外のカラムは何も変更していない。

解決策

更新日時をEntity.setUpdateTime()で直接更新し、saveメソッドを実行する。

原因

  • JPA側が「テーブルの内容に変更がない場合はUPDATEを実行しない」という仕組みになっている
  • 今回、更新日時以外に変更したい内容がなかったため、既存の内容そのままのエンティティにsaveメソッドを実行していたため、この仕様に引っかかった。
  • つまり、更新日時だけを更新したい場合は、@UpdateTimestampアノテーションを付与した場合でも、直接更新日時を入力してあげる必要がある。

勘違いしていたこと

テーブルの内容に変更がなくても、saveメソッドが呼ばれれば、UPDATEが実行されると思っていた