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