2011-06-24 3 views
1

Je veux todo simple rejoindre, bien que comparer les ID dans deux tables ..NHibernate HQL - Rejoindre

Je mon groupe Table, contenant;

  • ID
  • Nom
  • etc ..

Et j'ai ma table groupmap contenant;

  • ID
  • GroupID
  • ItemID

Ma requête prend un GroupMap.ItemID et vise à renvoyer une liste de groupes de l'ItemID appartient, dans SQL je l'ai fait ;

select Group.* from Group, GroupMap Where GroupMap.ItemID = '527' and Group.ID = GroupMap.GroupID; 

Cela renvoie ce que je demande, je ne peux pas juste semblent reproduire dans HQL, je pensais qu'il aurait été tout à fait banal.

Merci, James

Répondre

8

Vous pouvez utiliser un thêta joindre à hql

select g from Group g, GroupMap m Where m.ItemID = '527' and g.ID = m.GroupID 
+0

A travaillé parfaitement, merci. – Cadab

2

Avec un HQL, vous ne pensez pas en termes de tables et les relations entre les tables, mais dans des entités et des associations entre ces entités.

Donc, si vous avez les classes du groupe et GroupMap (que vous avez mis en correspondance avec vos tables de DB), vous devrez écrire quelque chose comme votre HQL ceci:

from Group as g inner join g.Maps as m where m.ItemID = '527' 

C'est, en supposant que votre entité Groupe dispose d'une collection d'entités GroupMap ...

+0

Merci, je suis toujours essayer d'obtenir ma tête autour d'elle. L'entité Groupe ne contient pas de collection de GroupMaps. Existe-t-il un autre moyen d'obtenir ma requête? – Cadab