2011-06-24 93 views
1

我想todo一个简单的加入,以及只是比较两个表中的ID ..NHibernate的HQL - 加入

我有我的组表,包含;

  • ID
  • 名称
  • 等。

,我有包含我的GroupMap表;

  • ID
  • 群ID
  • 项目ID

我的查询需要GroupMap.ItemID,其目的是恢复组的列表,该ITEMID属于在SQL我会做这个;

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

这将返回我的要求,我只是不能似乎复制它在HQL,我认为这将是非常微不足道的。

谢谢, 詹姆斯

回答

8

您可以使用theta连接在HQL

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

完美工作,谢谢。 – Cadab

2

随着HQL,你不认为在表和这些表之间的关系方面,但在这些实体之间的实体和关联。

所以,如果你有集团和GroupMap类(您已经映射到你的数据库表),你必须写你的HQL是这样的:

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

也就是说,假设你集团实体有GroupMap实体的集合...

+0

谢谢,我还是想把我的头周围。 Group实体不包含GroupMaps的集合。是否有另一种方法来实现我的查询? – Cadab