我想问一下是否有可能使用hibernate方式做到这一点。假设我已经运行了HQL并检索了一个集合。是否可以使用hibernate进一步过滤它?
我试图<filter>在标头类中使用,并在查询之前添加session.enable(),但似乎无法正常工作。
<filter>
样例代码
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就发挥了作用,结果现在就掌握在您手中。您可以在代码中实现过滤逻辑以对结果进行后处理。
list()
也就是说,可以 在 查询本身中过滤结果。如果您定义了一个Hibernate过滤器并为特定的模型/查询启用了该过滤器,则可以保留原始的HQL查询,并且Hibernate将在其后附加额外的where子句以进一步过滤结果。看到这个:
where
http://docs.jboss.org/hibernate/core/3.6/reference/zh- CN/html/filters.html