什么是将HQL用于带删除标志的数据的正确方法

时间:2015-06-20 13:49:40

标签: java hibernate orm hql soft-delete

我有几个删除了所有布尔字段的表。 过滤预先加载的集合(使用hql)的最佳方法是什么,即:

from worker as w left join  w.taskSet as t 
where (w.deleted!=true or w.deleted is null )  
and (t.deleted!=true or t.deleted is null )

如果他的作品已被删除,则不会返回工作人员实例

2 个答案:

答案 0 :(得分:1)

过滤将应用于正在提取的根实体(例如Worker),并且不会过滤掉收藏品。

最好在两个实体上定义filter以及一对一关联。

答案 1 :(得分:0)

此解决方案适合我



@FilterDef(name="NOT_DELETED")
@Filters({
    @Filter(name="NOT_DELETED", condition="not deleted or deleted is null")
})
@Entity
...
   @Column
   Boolean deleted
...



用法

session.enableFilter(" NOT_DELETED&#34);