私はデータベースオブジェクトに対するすべての変更を追跡するためにHibernateエンバーを使用しています。これらのオブジェクトは、(単方向)親子関係によって関連付けられることがあります。すべての削除されたオブジェクトを一覧表示すると思われるクエリが必要なので、削除されたオブジェクト(* _audテーブルのrevtype列)をマークするために、enversの監査テーブルに依存しています。ただし、これらのエントリは、親オブジェクトが削除されたときに、自分の子オブジェクトのいずれにも作成されないようです。Hibernate Envers:カスケード削除の監査テーブルにエントリを削除しません。
マイオブジェクトクラスは、次のようになります。
@Entity
@Audited
public class MyClass {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable = false, unique = false, length = 1024)
private String name;
// An object can have exactly one parent, but multiple children
@ManyToOne
@OnDelete(action = OnDeleteAction.CASCADE)
private MyClass parent;
}
私は疑ってるそれは何とかenversを休止バイパスアクションを削除カスケードとは何かを持っています。参照される親が削除されたときに、すべての子がデータベースによって自動的に削除されることを確認しながら、子オブジェクトの監査テーブルのエントリが作成されるようにするにはどうすればよいですか?
使用しているHibernateとEnversのバージョンは何ですか? – jpkrohling
現在、3.5.2のHibernateディストリビューションを使用しています。私は3.5.6を試しましたが、私は同じ結果を得ています。 –