所以我正在开发一个Web应用程序,我需要执行一个查询,以检索到我收到了消息的最新项目。该应用程序正在使用JAX-RS和Hibernate来完成其任务。该表如下所示:
我所关心的只是独特的项目,但那些在更新的列中具有最大值的项目。
因此,通常我会创建一个子查询,在该子查询中,我将按更新的列对所有内容进行排序,然后在out查询中调用独特的方法来检索有限的行。但是显然sql并不想这样做,而且CriteriaQuery不允许子查询中的orderby。
任何想法我如何使以下查询sql舒适(删除嵌套查询)。它在语法上可能并不正确,但是应该足以让我知道我想要做什么:
select distinct project from (select project,updated from Message order by updated) limit 5
我进行了很多搜索,尽管将一个分组与一个hading子句结合使用可以解决我的问题,但也无法使其工作。
答案 0 :(得分:0)
要获取5条最新消息,您可以使用:
List resultList = em.createQuery("select distinct m.project from Message m order by m.updated desc")
.setMaxResults(5)
.getResultList();