監査対象のエンティティAとBが2つあります。エンティティAはエンティティBのコレクションを保持しています(1対多の関係として注釈が付けられています)。Aの新しいインスタンスをデータベースに挿入すると、AとBのすべての行が同じリビジョン(たとえばリビジョン1)になります。次に、エンティティBのインスタンスにのみ影響するAの更新があります。したがって、更新後も、エンティティAはリビジョン1のままですが、Bのエンティティはリビジョン2です(監査テーブルのMODエントリを含む)。 。リビジョン3では、エンティティAが削除されます。エンティティBのコレクションには@Cascadeの注釈が付けられているため、Aに属するエンティティBも削除されます。
このシナリオで、リビジョン2の更新されたエンティティBを持つエンティティAのインスタンスを取得するEnversで監査クエリを作成するにはどうすればよいですか?エンティティAのすべてのリビジョンをクエリすると、Bのエンティティを持たないAの削除されたエンティティ(リビジョン3)を取得するか、リビジョン1のBエンティティを保持するリビジョン1のAも取得します。
それが役立つ場合は、Hibernate3.6を使用します。