Je suis en train de migrer une ancienne application "ASP classique" vers J2EE/Hibernate. J'ai un problème avec le type suivant des instructions SQL:Regroupement en mode hibernation
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
Comment puis-je exprimer quelque chose comme ça dans HQL? J'ai essayé de mapper les enfants en tant que collection (en utilisant plusieurs-à-un) et obtenir le nombre d'enfants de la taille de la collection, mais Hibernate doit charger toutes les entités "enfants", pour chaque parent séparément.
Cela entraîne l'exécution de 1000 requêtes DB au lieu de 1, avec tous les problèmes de performances qui en résultent.
Y a-t-il un moyen de contourner ce problème?
Je ne suis pas tout à fait sûr, mais je pense que la jointure pourrait/devrait être explicitement écrit: « left join fetch parent.Children "afin de dire à Hibernate de précharger la collection via rejoindre. – LorenzCK