2011-07-19 4 views
1

Possible en double:
Can I eager load a property using HQL?Amélioration de la récupération des données Hibernate.

Je vais essayer de synthétiser la question en faisant abstraction du scénario réel.

I ont l'Entité qui a l'Entité en tant que membre et est mollement chargé.

l'Entité a ainsi membre EntityC

Ce que je fais maintenant est pas très optimale

select distinct entA from EntityA entA ,EntityB entB, EntityC entC 
where entA.ent_B_ID = entB.id and entB.ent_C_ID = entC.id and entC.someValue ='x' 

Cela récupérera tous les entityA objets mais je dois faire appel à chacun des ces objets getEntityB et entitéBgetEntityC pour avoir l'objet complet, donc trop d'appels DB pour ce chargement paresseux. Remarque: Je ne peux pas remplacer les mappages.

Avant (il y a des années) j'ai utilisé JDBC et là avec sql j'aurais fait quelque chose de similaire mais avec HQL puis-je récupérer plein entitéA objets dans 1 requête?

Merci!

+2

Cela semble similaire à http://stackoverflow.com/questions/3684376. – ddso

+0

cela a bien fonctionné ... sélectionnez distinct entA de EntityA entA jointure gauche fetch entA.entityB gauche joint fetch entA.entityB.entityC où entA.entityB.entityC.someValue = '"+ someValue +"' "; – Cris

Répondre

1

Vous devez utiliser dans le « chercher » ou sur les critères ou dans le hql ou vous pouvez définir la relation - paresseuse = false

Questions connexes