如何编写涉及多个连接的Criteria查询

时间:2008-12-16 17:34:40

标签: nhibernate hql criteria

我正在尝试使用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>();

任何其他方式(有效!)这样做?

1 个答案:

答案 0 :(得分:4)

您可以使用别名

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>();

希望有所帮助