NHibernate HQL - 加入

时间:2011-06-24 08:43:07

标签: nhibernate join hql

我想要一个简单的连接,只需比较两个表中的ID ..

我有我的组表,包含;

  • ID
  • 名称
  • 等。

我的GroupMap表包含;

  • ID
  • 的GroupID
  • 的ItemID

我的查询采用GroupMap.ItemID并且意味着返回itemID所属的组列表,在SQL中我会这样做;

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

这会返回我需要的东西,我似乎无法在HQL中复制它,我认为这本来是非常简单的。

谢谢, 詹姆斯

2 个答案:

答案 0 :(得分:8)

您可以在hql中使用theta join

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

答案 1 :(得分:3)

使用HQL,您不会考虑这些表之间的表和关系,而是考虑这些实体之间的实体和关联。

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

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

也就是说,假设您的Group实体具有GroupMap实体的集合......