質問

セッションで取得されるすべてのエンティティに適用されるセッションファクトリ(構成)レベルに単一の基準を追加する方法はありますか? データベースから行を削除せずに、「マーク」を付ける必要があります。削除されたエンティティ自体を削除し、それ以降の操作に参加しないようにします。

すべてのエンティティを共通のインターフェイス(たとえば、共通の基本Daoオブジェクト)を介して取得できることはわかっていますが、グローバルフィルタリングを使用したアプローチは、この共通のインターフェイスを使用する知識を必要としないため、エラーが発生しにくくなります。

役に立ちましたか?

解決

Hibernateドキュメンテーションでこれについてもう少し詳しく説明します。これを処理する最良の方法は、フィルターを使用することです。

最初に、次のようにクラスまたはコレクションにフィトラーを定義します:

<filter-def name="IsDeletedFilter">
  <filter-param name="IsDeleted" type="bool"/>
</filter-def>

次に、クラスまたはコレクションに添付します:

<class/set  ...>
...
<filter name="IsDeletedFilter" condition=":IsDeleted = Is_Deleted"/>

残念ながら、ソフト削除するすべてのクラスでこれを行う必要があります。ただし、基本クラス SoftDeleteEntity をマップして、サブクラス階層ごとにテーブルを作成できる場合があります。

また、リスナーでこれを行うことができると主張する人もいますが、方法はわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top