私は次の設定をしています: さまざまなエンティティ ( Projects
、Tests
、Users
) があり、次に がありますTestReports
。他のTestReports
エンティティと、ファイルシステム内のいくつかの追加データを参照します。
レポートは生成され、(監査目的で) 削除されることはありません。ただし、他のエンティティは削除できます。これは、レポートが削除されたエンティティを参照する場合に発生します。これは、ビジネスの観点からは問題ありません。レポートは[deleted id123]
、削除されたエンティティ ラベルの代わりに表示されるだけで問題ありません。ただし、javax.persistence.EntityNotFoundException
削除されたエンティティを参照するレポートを読み込もうとすると、 が表示されます。
そのような場合、Hibernate/JPA に ID といくつかのisDeleted
フラグを持つファントム オブジェクトを作成するように指示する方法はありますか?
Hibernate Envers のドキュメントでは、リビジョン履歴をトラバースするときにそのようなものをサポートしていることがわかりましたが、「通常の」エンティティでそれを使用する方法が見つかりませんでした。
Envers のドキュメントから:
2 番目のパラメータ selectDeletedEntities は、エンティティが削除されたリビジョンを結果に含めるかどうかを指定します。はいの場合、そのようなエンティティにはリビジョン タイプ DEL があり、ID を除くすべてのフィールドが null になります。
deleted
すべてのオブジェクトにフラグを導入することによる回避策を認識しており、実際の削除の代わりにソフト削除の場合に使用します。しかし、これは私が避けたい余分なオーバーヘッドを追加します。