フィールドを持つエンティティがあります
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "edit_timestamp",
columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Date editTimestamp;
@Version
@Column(name = "edit_count")
private short editCount;
private String text;
Spring-Data-JPAで更新しようとすると、 edit_count がインクリメントされていることがわかりますが、 edit_timestamp は同じままです。手動で SQL を呼び出す場合
UPDATE post SET TEXT='456' WHERE post_id=1;
edit_timestamp が更新されます。追加すると
@PreUpdate
protected void onUpdate() {
editTimestamp = new Date();
}
問題なく動作します。私の質問は、なぜ @PreUpdate なしで edit_timestamp が更新されないのですか?