4

データベースにフラッシュするたびに列を更新することはできますか? modifiedOnDBトリガーと同様に、列がmodifiedByあり、DB更新ごとにそれらを更新したいと考えています。JPAで可能ですか?

4

2 に答える 2

1

免責事項:以下は、Hibernate / JPA でのみ機能します。

modifiedOnJPA を使用して、次のようにプロパティを更新できます。

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 に答える