java - Hibernate 过滤查询集合

标签 java hibernate hql

我想问是否可以使用 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/

相关文章:

java - 在 RxJava 中订阅 Observable 时出现问题

java - Java 字符串循环

java - 使用 HibernateTemplate 和 IN 子句进行批量更新

java - Hibernate 和多线程逻辑

java - 将投影形式 Hibernate HQL 查询映射到对象

mysql - 如何通过传递另一个列值来检索列值

java - 在这种情况下,java 堆会抖动到磁盘吗?

java - Sonarqube 6.7x 的安全插件

java - 如何连接两个条件查询

java - JPA/Hibernate在获取数据时非常慢