我想问一下是否可以使用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
答案 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。
希望有所帮助。