Hibernate全球过滤标准

时间:2008-09-26 10:21:45

标签: java hibernate

有没有办法在会话工厂(配置)级别添加一个标准,哪些所有都可以通过会话进行检索? 我们要求不从数据库中删除任何行,而是“标记”已删除的实体,以便它们不会参与任何进一步的操作。

我知道我们可以通过一个公共接口(例如一个公共基础Dao对象)来回溯所有的entites,但是使用全局过滤的方法不会出错,因为它不需要使用这个公共接口的知识

1 个答案:

答案 0 :(得分:2)

The Hibernate Documentation详细阐述了这一点。看起来处理这个问题的最佳方法是使用Filters。

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

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

然后将它附加到类或集合中:

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

唉,你必须对你想要软删除的每个类都这样做。但是您可以映射出基类SoftDeleteEntity并且每个子类层次结构都有一个表。

我也看到有些人声称可以和听众一起做这件事,虽然我不知道怎么做。