Open1
@UpdateTimestampをつけているのに更新日が更新されない
発生したこと
更新日時を表すカラムに@UpdateTimestamp
を付与しているにもかかわらず、
saveメソッドを実行してもテーブルの更新日時が更新されない
状況
- 更新日時だけを更新したい。
- 従って、更新日時以外のカラムは何も変更していない。
解決策
更新日時をEntity.setUpdateTime()で直接更新し、saveメソッドを実行する。
原因
- JPA側が「テーブルの内容に変更がない場合はUPDATEを実行しない」という仕組みになっている
- 今回、更新日時以外に変更したい内容がなかったため、既存の内容そのままのエンティティにsaveメソッドを実行していたため、この仕様に引っかかった。
- つまり、更新日時だけを更新したい場合は、
@UpdateTimestamp
アノテーションを付与した場合でも、直接更新日時を入力してあげる必要がある。
勘違いしていたこと
テーブルの内容に変更がなくても、saveメソッドが呼ばれれば、UPDATEが実行されると思っていた