【问题标题】:NHibernate HQL - JoiningNHibernate HQL - 加入
【发布时间】:2011-06-24 08:43:07
【问题描述】:

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

我有我的组表,包含;

  • 身份证
  • 姓名
  • 等等..

我的 GroupMap 表包含;

  • 身份证
  • 组ID
  • 物品ID

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

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

这返回了我需要的东西,我似乎无法在 HQL 中复制它,我认为它会很简单。

谢谢, 詹姆斯

【问题讨论】:

    标签: nhibernate join hql


    【解决方案1】:

    您可以在 hql 中使用 theta 连接

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

    【讨论】:

      【解决方案2】:

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

      因此,如果您有 Group 和 GroupMap 类(您已将它们映射到您的数据库表),您将不得不编写类似这样的 HQL:

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

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

      【讨论】:

      • 谢谢,我还在努力解决这个问题。 Group 实体不包含 GroupMaps 的集合。还有其他方法可以实现我的查询吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多