2016-07-31 3 views
0

Мне нужно отсортировать темы по последнему сообщению. Может кто-то, пожалуйста, помогите мне с этим спящим запросом:Ошибка гибернации: неожиданный узел АСТ

unexpected AST node: query 
[SELECT t 
FROM Topic t 
ORDER BY 
(SELECT MAX(p.createdOn) FROM Post p WHERE p.topic.id = t.id) 
DESC] 

В чем проблема?

ответ

1
SELECT topic FROM Post ORDER BY createdOn 
+0

Эта идея помогла - извлекла данные из таблицы posts вместо тем - затем просто извлекла все данные - поскольку hibernate извлекает все соединения и предоставляет объекты с помощью методов .get. затем сгруппированы постов.topic. – Dancyg

+0

Я рад, что это помогло :-) – Khodabakhsh

0

Я думаю, что этот JPQL запрос должен работать

select t.id, t.description, max(p.createdOn) as maxCreationTime 
from Topic t inner join t.posts p 
group by t.id, t.description 
order by maxCreationTime 

Если вы хотите включить темы, которые не относятся сообщения.

select t.id, t.description, max(p.createdOn) as maxCreationTime 
from Topic t left join t.posts p 
group by t.id, t.description 
order by maxCreationTime 

Вы должны указать выбранные поля от темы для того, чтобы агрегирования функции max работы. Надеюсь это поможет.

Смежные вопросы