当前位置: 首页 > 面试题库 >

休眠过滤查询集合

赫连法
2023-03-14
问题内容

我想问一下是否有可能使用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

问题答案:

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

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

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



 类似资料:
  • 问题内容: 我在使用Hibernate创建子查询时遇到问题。不幸的是Subqueries类几乎完全没有文档,因此我完全不知道如何将以下SQL转换为Hibernate Criteria: 我希望以下内容能够“正常工作”: 但不幸的是,事实并非如此。因此,看来我实际上必须使用Subqueries类来创建Criteria。但是我无法通过Google找到一个合理的例子,因此这使我在这里提出了疑问。 问题答

  • 问题内容: 当我尝试从数据库中删除条目时,使用 然后我可以执行以下操作: 1)如果该行存在于数据库中,则将执行两个SQL查询:一个选择,然后一个删除 2)如果数据库中不存在该行,则仅执行选择查询 但是同样,更新不是这种情况。无论是否存在数据库行,都只会执行更新查询。 请让我知道为什么这种行为用于删除操作。这不是性能问题,因为遇到了两个查询而不是一个查询? 编辑: 我正在使用休眠3.2.5 样例代码

  • 问题内容: 我需要使用detachedCriteria进行此SQL查询: 这个想法是从不属于用户的游戏中获取ID。我尝试了与detachedCriteria类似的10种不同方法,但得到了“未知实体:null” MappingException代码应类似于: 还设置投影以仅返回游戏的ID。 有任何想法吗?我认为Hibernate在加入没有别名的查询时会遇到一些麻烦。添加别名是可行的,但结果是完全错误

  • 问题内容: 可以说我有两个实体 我现在想要的是,当我获取EntityA时,我想添加一个where子句以获取所有modelPercent大于0的EntityB。 我不想使用过滤器,因为此要求仅适用于这种特殊情况。 例如数据: 我需要一种方法,可能是获取EntityA的hql,以便当我说EntityA.getEntityBList()时,它应该仅返回1条记录(一个模型百分比为10(大于零的记录))。

  • 问题内容: 我已经使用Seam 2.2.1和MySQL编写了一个正在运行的应用程序。我现在尝试将应用程序连接到 Informix, 并且当我从 hibernate ()执行查询时,出现以下异常: org.hibernate.exception.genericjdbcexception无法执行查询 当我执行查询时,执行成功。 生成的sql是 选择前2个user0_.USER_ID作为USER1_12

  • 问题内容: 我一直在努力寻找可以通过JPA中的方法调用设置的所有提示的权威资源,但我的想法是空的。有人知道很好的参考吗? 问题答案: 请参阅“ 3.4.1.7。查询提示” 。