使用 HQL 处理带有删除标志的数据的正确方法是什么

Whats the correct way to use HQL for data with delete flags

我有几个表都删除了一个布尔字段。 过滤预先加载的集合(使用 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 )

如果他有被删除的工作,他不会return一个工人实例

过滤应用于正在获取的根实体(例如 Worker),集合不会被过滤掉。

您最好在两个实体和一个一对多关联上定义 filter

这个解决方案对我有用



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



用法

session.enableFilter("NOT_DELETED");