データベースにフラッシュするたびに列を更新することはできますか? modifiedOn
DBトリガーと同様に、列がmodifiedBy
あり、DB更新ごとにそれらを更新したいと考えています。JPAで可能ですか?
1241 次
2 に答える
1
免責事項:以下は、Hibernate / JPA でのみ機能します。
modifiedOn
JPA を使用して、次のようにプロパティを更新できます。
public class Entity {
private Date modifiedOn;
@PreUpdate
@PrePersist
public void updateModified() {
modifiedOn = new Date();
}
}
についてはmodifiedBy
、JPA 仕様がライフサイクル コールバック メソッド内の他のエンティティへの参照を推奨していないため、少し注意が必要です。さらに、おそらくサービス層に属する現在のユーザーについての知識が必要になります。
このように使用できますEntityListener
(ただし、これはまだコールバックメソッドを使用しています)
@Entity
@EntityListeners({MyListener.class})
public class MyEntity {
Date modifiedOn;
User modifiedBy;
...
}
EntityListener の An:
public class MyListener {
CurrentUserProvider provider; // Implement this and make sure it is set
@PreUpdate
@PrePersist
public void updateModifier(MyEntity entity) {
entity.setModifiedOn(new Date());
entity.setModifiedBy(provider.getCurrentUser());
}
}
于 2012-12-12T08:16:42.210 に答える
-1
明らかに JPA には、@PrePersist、@PreUpdate などの仕様で定義されたエンティティ コールバックがあります。仕様を簡単に修正すると、詳細が得られます
于 2012-12-12T08:12:37.150 に答える