Я в процессе миграции старого приложения «классического ASP» в J2EE/Hibernate. У меня есть проблема со следующим типом операторов SQL:Группировка в спящем режиме
SELECT parent.id, parent.name, parent.column1, count(child.id) AS no_of_children
FROM parent
INNER JOIN child ON child.parent_id = parent.id
GROUP BY parent.id, parent.name, parent.column1
Как я выразить что-то подобное в HQL? Я попытался сопоставить детей как коллекцию (используя много-к-одному) и получить количество детей из размера коллекции, но затем Hibernate должен загрузить все «дочерние» сущности для каждого родителя отдельно.
Это приводит к выполнению около 1000 запросов БД вместо 1, со всеми возникающими проблемами с производительностью.
Есть ли способ обойти это?
Я не совсем уверен, но я думаю, что присоединиться может/должно быть явно написано, как: «левое соединение выборки parent.Children ", чтобы сообщить Hibernate предварительно загрузить сборку через соединение. – LorenzCK