【问题标题】:How to a write a Criteria query with multiple joins involved如何编写涉及多个联接的条件查询
【发布时间】:2010-09-27 04:30:48
【问题描述】:

我正在尝试使用 Criteria API 编写以下 HQL 查询:

var userList = _session
                .CreateQuery("select u from User u where u.Role.ID=3 and u.Customer.ID=:cID")
                .SetInt32("cID", 1)
                .List<User>();

(3 个 NHibernate 对象:用户(ID,名称,角色,客户),角色(ID,名称)和客户(ID,名称)。

我尝试了以下方法,但它不起作用,因为 NHibernate 试图找到与角色关联的客户:

var userList = _session
            .CreateCriteria(typeof(User))
            .CreateCriteria("Role")
            .Add(Restrictions.Eq("ID", 3) )
            .CreateCriteria("Customer")
            .Add(Restrictions.Eq("ID", 1) )
            .List<User>();

还有其他方法(可行!)吗?

【问题讨论】:

    标签: nhibernate hql criteria


    【解决方案1】:

    你可以使用别名

    var userList = _session
            .CreateCriteria(typeof(User), "u")
            .CreateAlias("u.Role", "r")
            .Add(Restrictions.Eq("r.ID", 3) )
            .CreateAlias("u.Customer", "c")
            .Add(Restrictions.Eq("c.ID", 1) )
            .List<User>();
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      相关资源
      最近更新 更多