我想问是否可以使用 hibernate 来做到这一点。 假设我已经运行了 HQL 并检索了一个集合。是否可以使用hibernate进一步过滤它?
我尝试使用 <filter>
到 header 类并在查询之前添加 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
最佳答案
没有。至少,不是你问的那样。一旦您要求 Hibernate 访问数据库(使用 list()
方法),Hibernate 就会完成其职责,结果现在就在您手中。您可以在代码中实现过滤逻辑来对结果进行后处理。
也就是说,可以在查询本身中过滤结果。如果您定义 Hibernate 过滤器并为特定模型/查询启用它,您将能够保留原始 HQL 查询,Hibernate 将在其后面附加额外的 where
子句以进一步过滤结果。看这个:
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/filters.html
关于java - Hibernate 过滤查询集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307366/