Bonjour,
Mon problème est le suivant:
J'ai un modèle objet avec une vingtaine de classes, où les OneToMany sont en LAZY.
Mais Parfois on doit envoyer au client lourd la totalité des objets liés à un point donné du graphe; j'ai codé un bean qui par introspection va appeler size() sur toutes les collections, pour forcer le chargement des OneToMany.
Mais c'est un peu lent, et quelqu'un m'a suggérer de tout récupérer en une fois avec une grosse requête qui fait des join fetch, la doc Hibernate a l'air de dire que ca pourrait bien forcer le chargement.
Probleme:
-Est-il possible de coder une telle requête, et les perfs ne seront-elles pas encore pires?
-J'ai essayé de tester avec seulement 2 entités du graphe d'objet, avec une requete:
"select mere from Mere mere "
+ "left join fetch mere.filles fille";
Car on veut récupérer toutes les mères meme celles qui n'ont pas de filles.
Probleme, quand du cote client je recupere les Meres, il y en a bien le bon nombre, mais chacune d'entre elles a, en plus de ses filles "réelles" (celles qui sont en BD) des filles "fantômes" qui sont NULL!
Plus précisément, les mères sans filles n'ont pas de fille fantôme, mais la première mère "avec fille" de la liste a une fille NULL, la seconde 2, etc..
Bizarre non?
Je suis sûr qu'il y a une expliocation simple, ce n'est pas par hasard qu'on a une progression arithmetique 1,2,3, etc.. filles fantomes.
Partager