Hibernate过滤器可以与标准查询一起使用吗?

时间:2015-08-14 16:29:37

标签: java hibernate orm filter hibernate-mapping

Hibernate文档提供了有关Hibernate filters的一些信息,并讨论了该部分中的HQL和加载提取。但它从未明确提及将其与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

1 个答案:

答案 0 :(得分:1)

是的,它也适用于Criteria。无论您使用什么来加载实体(HQL,session.get(),Criteria API或本机查询),都会在会话级别应用过滤器。