2009-11-04 5 views
2

j'ai trois tables et 2 classes de modèle JPA:mise en veille prolongée beaucoup à plusieurs

Unit 
------------ 
id [PK] - Integer 
code  - String 
unitGroups - List<UnitGroup> 


UnitGroup 
------------ 
id [PK] - Integer 
ugKey  - String 
units  - List<Unit> 

unités et unitGroups ont beaucoup à plusieurs entre eux. brièvement, je veux écrire une requête HQL pour obtenir la sortie de SQL suivante:

SELECT u.* 
FROM units u, unit_groups ug, unit_group_pairs ugp 
WHERE ugp.UnitID = u.ID 
AND ugp.UnitGroupID = ug.ID 
AND ug.UGKey = 'amount' AND u.ID = 10 

Répondre

1

enfin:

select u from Unit u left join u.unitGroups ug where u.id = 10 and ug.ugKey = 'amount' 
1

J'espère que cela fonctionnera, mais pas sûr. S'il vous plaît pas de négatif :). Je n'ai pas essayé cela moi-même. Juste venir avec ça, donc ça pourrait t'aider. À votre santé.

from Unit as units 
inner join fetch units.unitGroups grp 
inner join fetch grp.units 
where grp.ugKey = 'amount' and units.id = 10 
+0

Merci, mais j'ai créé many-to-many. Ma question concerne HQL. –

+0

Modifié. Désolé pour la mauvaise hypothèse. –

+0

J'ai eu cette erreur; org.hibernate.loader.MultipleBagFetchException: impossible d'extraire plusieurs sacs simultanément –

0

Essayez cette

select u from unit as u 
where u.ID = 10 and 
'amount' = any elements(u.unitGroups.UGKey) 
+0

Sélectionnez u dans Unit u où u.id = 10 et 'amount' = tous les éléments (u.unitGroups.ugKey): org.hibernate.QueryException: tentative illégale de déréférencement de la collection [unit0_.ID.unitGroups] avec la propriété element référence [ugKey] –

Questions connexes