2

有没有办法在会话工厂(配置)级别添加一个标准,该标准将适用于使用 Session 检索到的所有实体?我们要求不要从我们的数据库中删除任何行,而是“标记”已删除的实体,这样它们就不会参与任何进一步的操作。

我知道我们可以通过一个公共接口(例如一个公共基础 Dao 对象)来检索所有实体,但是使用全局过滤的方法不太容易出错,因为它不需要使用这个公共接口的知识。

4

1 回答 1

2

Hibernate 文档对此进行了详细说明。看起来处理这个问题的最好方法是使用过滤器。

首先,您在类或集合上定义一个 fitler,如下所示:

<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 回答