2

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

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

4

1 回答 1

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

希望能帮助到你

于 2008-12-17T07:31:25.283 回答