JPA CriteriaQuery, имеющий пункт - PullRequest
0 голосов
/ 22 июня 2019

поэтому я работаю над веб-приложением, и мне нужно выполнить запрос, который возвращает мне самые последние проекты, которые получили сообщение.Приложение использует JAX-RS и Hibernate для выполнения своих задач.Таблица выглядит следующим образом:

enter image description here Все, что меня беспокоит, это уникальные проекты, но те, которые имеют максимальное значение в обновленном столбце.

Такобычно я создаю подзапрос, в котором я сортирую все по обновленному столбцу и в запросе out вызываю отдельный метод, извлекающий ограниченное количество строк.Но, очевидно, sql этого не хочет, а critQuery не разрешает делать заказы внутри подзапроса.

Любая идея, как сделать следующий запрос комфортным (исключить вложенный запрос).Это не может быть синтаксически правильным, но этого должно быть достаточно, чтобы понять, что я хочу, чтобы он делал:

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

Я много искал, и хотя группа, объединенная с предложением «иметь», решила бы моепроблема, но не может заставить его работать.

1 Ответ

0 голосов
/ 22 июня 2019

Чтобы получить 5 самых последних сообщений, которые вы можете использовать:

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