Hibernate过滤查询集合

时间:2011-03-15 03:57:24

标签: java hibernate hql

我想问一下是否可以使用hibernate来做到这一点。 假设我已经运行了HQL并检索了一个集合。是否可以使用休眠进一步过滤它?

我尝试将<filter>用于标题类,并在查询之前添加session.enable(),但似乎无效。

示例代码

Query search = session.getNamedQuery(HQL_SOMEDEFAULTQUERY);
List results = search.list();
//further filtering ...

剥离HQL

select h
    from flow as f
    join f.item as i
    join i.header as h
    where i.status = :status
    and f.staff = :staff
    order by i.prId desc

2 个答案:

答案 0 :(得分:2)

没有。至少,不是你问的方式。一旦你要求Hibernate命中数据库(使用list()方法),Hibernate就会发挥作用,结果现在掌握在你手中。您可以在代码中实现过滤逻辑以对结果进行后处理。

也就是说,可以在查询本身中过滤 中的结果。如果您定义一个Hibernate过滤器并为特定模型/查询启用它,您将能够保留原始HQL查询,并且Hibernate将使用额外的where子句附加它以进一步过滤结果。见:

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/filters.html

答案 1 :(得分:2)

更好的方法是使用Criteria。以下是Hibernate Documentation that explains usage of Criteria的示例。

在调用list方法之前将使用Criteria。

希望有所帮助。