Hibernate文档提供了有关Hibernate filters的一些信息,并在该部分中讨论了HQL和负载提取。但它从未明确提及与criteria queries结合使用的任何内容。会出现以下情况吗?假设休眠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),这些过滤器都会在会话级别上应用。