Hibernate 过滤器可以与条件查询一起使用吗?

Can Hibernate filters be used with criteria queries?

Hibernate 文档提供了一些关于 Hibernate filters, and talks about HQL and load fetching in that section. But it never explicitly mentions anything about using them in conjunction with criteria queries 的信息。像下面这样的东西会起作用吗?假设 Hibernate 4.3.

实体定义

@Entity
@FilterDef(name="myFilter", parameters=@ParamDef( name="myParam", type="integer" ) )
@Filters( {
    @Filter(name="myFilter", condition="myField = :myParam")
} )
// assume MyType contains some mapped field named "myField"
public class MyType { ... }

查询码

sess.enableFilter("myFilter").setParameter("myParam", 1);
Criteria crit = sess.createCriteria(MyType.class);
//set some other restrictions on crit
List items = crit.list();

项目是否已应用 myFilter

是的,它也应该适用于 Criteria。无论您使用什么来加载实体(例如,HQL、entityManager.find()、Criteria API),过滤器都应用于会话级别。