我有一个实体:
@Entity
@Table(name = "[Usermaster]")
@Where(clause = "isDeleted = 0")
public class User {
//...
}
在某些流程中我需要忽略@Where注释并获取用户,即使isDeleted不是0.我该如何制作? (我使用CRUD存储库来查询)
答案 0 :(得分:3)
@Where
设置有动态版本,它是@Filter
。见:
Hibernate能够预先定义过滤条件,并在类级别和集合级别附加这些过滤器。过滤条件允许您定义类似于类和各种集合元素上可用的现有
"where"
属性的限制子句。
管理@Filter有点复杂,简而言之:
<filter-def>
/ @FilterDef
需要定义过滤器<filter>
/ @Filter
分配给班级或集合session.enableFilter("myFilter").setParameter("myFilterParam", "some-value");
所以,这虽然有点复杂,却提供了我们所需要的:动态 @Where
可以在运行时打开/关闭
答案 1 :(得分:3)
旧问题,但答案可能是here:
简单的解决方案是使用本机SQL:
lst = sessionFactory.getCurrentSession().
createSQLQuery("select {entb.*} from EntityB entb where is_deleted=1")
.addEntity("entb", EntityB.class)
.list();