【问题标题】:Hibernate global filtration criteriaHibernate 全局过滤标准
【发布时间】:2008-09-26 10:21:45
【问题描述】:

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

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

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

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

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

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

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

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

    唉,您必须对要软删除的每个类都执行此操作。但是您可能能够映射出一个基类SoftDeleteEntity 并为每个子类层次结构创建一个表。

    我也看到有些人声称能够对听众做到这一点,但我不知道如何。

    【讨论】:

      猜你喜欢
      • 2013-08-05
      • 2011-12-05
      • 2014-09-20
      • 1970-01-01
      • 2012-03-29
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      相关资源
      最近更新 更多