Доберитесь дети рассчитывают через HQL

У меня есть 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 мс на той же базе данных.

6
задан Pascal Thivent 1 May 2010 в 00:39
поделиться

1 ответ

Я не на 100% уверен, что, но как насчет этого:

select new map(parent.id, count(elements(parent.children)))
from Parent parent group by parent.id
4
ответ дан 17 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: