有没有办法在会话工厂(配置)级别添加一个标准,哪些所有都可以通过会话进行检索? 我们要求不从数据库中删除任何行,而是“标记”已删除的实体,以便它们不会参与任何进一步的操作。
我知道我们可以通过一个公共接口(例如一个公共基础Dao对象)来回溯所有的entites,但是使用全局过滤的方法不会出错,因为它不需要使用这个公共接口的知识
答案 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
并且每个子类层次结构都有一个表。
我也看到有些人声称可以和听众一起做这件事,虽然我不知道怎么做。