AとBの2つのエンティティがあるとします。AはBと@OneToManyの関係を持ち、Bのすべてのプロパティを監査しました。Enversを使用してリビジョンを取得すると、A Bのプロパティの変更を取得する必要があります。これを行う方法はありますか?Hibernate Envers - @OneToMany関係にあるエンティティの変更を監査する方法は?
ありがとうございます!私は以下のマッピングの推定をオフに働いています
AとBの2つのエンティティがあるとします。AはBと@OneToManyの関係を持ち、Bのすべてのプロパティを監査しました。Enversを使用してリビジョンを取得すると、A Bのプロパティの変更を取得する必要があります。これを行う方法はありますか?Hibernate Envers - @OneToMany関係にあるエンティティの変更を監査する方法は?
ありがとうございます!私は以下のマッピングの推定をオフに働いています
:
@Entity
@Audited
public class EntityA {
/* other properties & getters/setters */
@OneToMany(mappedBy = "a", cascade = CascadeType.ALL)
private List<EntityB> bList;
}
@Entity
@Audited
public class EntityB {
/* other properties & getters/setters */
@ManyToOne
private EntityA a;
}
いつでもあなたはEntityA
からEntityB
を追加/削除、これが追加されEntityA
だけでなく、関連するEntityB
に関連付けられているリビジョンの変更をトリガーします/関係のため削除されました。
しかし、あなたは、あなたがEntityA
時には直接影響を与えないEntityB
のいくつかの属性を変更することにした場合、唯一のEntityB
なくEntityA
のために生成リビジョンがあるだろう、以下を参照してください。
entityManager.getTransaction().begin();
final EntityA a = entityManager.find(EntityA.class, aId);
for (EntityB b : a.getbList()) {
b.setName(b.getName() + "-modified");
}
entityManager.merge(a);
entityManager.getTransaction().commit();
あなたは、この場合にEntityB
の個々の改正が必要な場合は、実際には、特に代わりAuditReader
インタフェースを介してEntityB
を照会する必要があります。
ありがとう、これは私が頑張ったものです、私はそれを試し、あなたに知らせるでしょう。 – codenoob
リレーションの '@ Audited'アノテーションで' org.hibernate.envers.global_with_modified_flag'を使うか 'modifiedFlags = true'を設定していますか? – Naros
どこにタグを配置しますか?関係またはエンティティBのプロパティ – codenoob
エンティティBは@auditableとマークされていますか? –