首页 > 解决方案 > JPA CriteriaQuery 有子句

问题描述

所以我正在开发一个 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 子句结合可以解决我的问题,但也无法使其正常工作。

标签: sqlhibernatejpah2

解决方案


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

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

推荐阅读