Hibernate envers を使用して、データベース オブジェクトに加えられたすべての変更を追跡しています。これらのオブジェクトは、(一方向の) 親子関係によって関連付けられることがあります。削除されたすべてのオブジェクトをリストすることになっているクエリが必要なので、envers の監査テーブルに依存して、削除されたオブジェクトをマークします (*_aud テーブルの revtype 列)。ただし、これらのエントリは、親オブジェクトが削除されたときに子オブジェクトに対して作成されないようです。
私のオブジェクトクラスは次のようになります。
@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;
}
どういうわけか休止状態の環境をバイパスするカスケード削除アクションと関係があると思われます。参照された親が削除されたときにすべての子がデータベースによって自動的に削除されることを確認しながら、子オブジェクトの監査テーブルのエントリが作成されるようにするにはどうすればよいですか?