У меня есть one-many, отображающийся между родительским объектом и дочерними объектами. Теперь я должен найти число детей связанным с каждым родителем для списка родителей. Я пытаюсь сделать это с HQL, но я не уверен, как я могу получить список родителей там. Кроме того, я не знаю, как я могу возвратить сам объект и не только его идентификатор. Мой текущий запрос HQL:
select new map(parent.id as parentId, count(*) as childCount)
from Parent parent left join parent.children children
group by parent.id
но это только возвращает идентификатор и не фильтрует на определенных родителях.
РЕДАКТИРОВАНИЕ На основе ответа Паскаля я изменил запрос к
select new map(parent as parent, count(elements(parent.children)) as childCount)
from Parent parent
group by parent
Это действительно работает, но непомерно медленно: 30 секунд вместо 400 мс на той же базе данных.
Я не на 100% уверен, что, но как насчет этого:
select new map(parent.id, count(elements(parent.children)))
from Parent parent group by parent.id