一尘不染

休眠过滤查询集合

hibernate

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

我试图<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

阅读 261

收藏
2020-06-20

共1个答案

一尘不染

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

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

http://docs.jboss.org/hibernate/core/3.6/reference/zh-
CN/html/filters.html

2020-06-20