最後に変更された属性を持つエンティティがあります。
@Temporal(TemporalType.TIMESTAMP)
private Date lastModified;
@PreUpdate
@PrePersist
protected void onUpdate() {
lastModified = new Date();
}
古いエンティティのいくつかの属性を設定する名前付き jpql 更新クエリ:
update entity e set ... where e.lastModified < :threshold
ただし、 onUpdate() メソッドは、変更されていないエンティティに対しても呼び出されます。これは、次の場合のイベントです。
entityManager.createQuery("...").executeUpdate();
更新されたエンティティの数としてゼロを返します。
最近のエンティティに触れずに、古いエンティティのみを更新できますか? 更新されたエンティティではしきい値パラメーターが不明なため、更新を onUpdate() メソッドに移動できません。ネイティブクエリはこれに役立ちますか?