【问题标题】:JPA CriteriaQuery having clauseJPA CriteriaQuery 有子句
【发布时间】:2019-06-21 21:26:40
【问题描述】:

所以我正在开发一个 web 应用程序,我需要执行一个查询来检索我收到一条消息的最新项目。应用程序使用 JAX-RS 和 Hibernate 来完成它的任务。表格如下所示:

我感兴趣的是独特的项目,但那些在更新的列中具有最大值的项目。

所以通常我会创建一个子查询,在其中我将按更新的列对所有内容进行排序,并在 out 查询中调用 distinct 方法检索有限数量的行。但显然 sql 不希望这样,并且 criteriaQuery 不允许在子查询中使用 orderby。

知道如何使以下查询 sql 舒适(删除嵌套查询)。它可能在语法上不正确,但应该足以了解我想要它做什么:

select distinct project from (select project,updated from Message order by updated) limit 5

我进行了很多搜索,虽然 group by 与 having 子句结合可以解决我的问题,但也无法使其正常工作。

【问题讨论】:

  • 我通过使用此处发布的查询找到了解决方案:stackoverflow.com/questions/53226053/…Realizable using subqueries in criteriaqueries。编辑:有人可以做到,所以这个问题是指上面的链接吗?基本上是重复的

标签: sql hibernate jpa h2


【解决方案1】:

要获取您可以使用的 5 条最新消息:

List resultList = em.createQuery("select distinct m.project from Message m order by m.updated desc")
                    .setMaxResults(5)
                    .getResultList();

【讨论】:

  • 不幸的是,这不起作用。我收到一个错误(它是德语,但我搜索了正确的英文版本)“在这种情况下,按表达式排序必须在结果列表中”
猜你喜欢
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 2015-12-17
  • 2013-05-19
相关资源
最近更新 更多