3

私は次の設定をしています: さまざまなエンティティ ( ProjectsTestsUsers) があり、次に がありますTestReports。他のTestReportsエンティティと、ファイルシステム内のいくつかの追加データを参照します。

レポートは生成され、(監査目的で) 削除されることはありません。ただし、他のエンティティは削除できます。これは、レポートが削除されたエンティティを参照する場合に発生します。これは、ビジネスの観点からは問題ありません。レポートは[deleted id123]、削除されたエンティティ ラベルの代わりに表示されるだけで問題ありません。ただし、javax.persistence.EntityNotFoundException削除されたエンティティを参照するレポートを読み込もうとすると、 が表示されます。

そのような場合、Hibernate/JPA に ID といくつかのisDeletedフラグを持つファントム オブジェクトを作成するように指示する方法はありますか?

Hibernate Envers のドキュメントでは、リビジョン履歴をトラバースするときにそのようなものをサポートしていることがわかりましたが、「通常の」エンティティでそれを使用する方法が見つかりませんでした。

Envers のドキュメントから:

2 番目のパラメータ selectDeletedEntities は、エンティティが削除されたリビジョンを結果に含めるかどうかを指定します。はいの場合、そのようなエンティティにはリビジョン タイプ DEL があり、ID を除くすべてのフィールドが null になります。

deletedすべてのオブジェクトにフラグを導入することによる回避策を認識しており、実際の削除の代わりにソフト削除の場合に使用します。しかし、これは私が避けたい余分なオーバーヘッドを追加します。

4

2 に答える 2

4

これがあなたが探しているものかどうかわかりません。@NotFound(action=NotFoundAction.IGNORE)注釈を使用して、EntityNotFoundException をスローするのではなく、フィールドに null を設定するように hibernate に指示できます。これに関するドキュメントはあまりありません。使用方法については、こちらを参照してください

于 2012-08-08T09:24:52.527 に答える