2

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

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

4

1 に答える 1

2

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

まず、次のようにクラスまたはコレクションにフィルタを定義します。

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

次に、それをクラスまたはコレクションにアタッチします。

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

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

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

于 2008-09-26T12:10:35.137 に答える