我正在尝试使用 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>();
还有其他方法(有效!)吗?
最佳答案
您可以使用别名
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>();
希望对你有帮助
关于nhibernate - 如何编写涉及多个联接的条件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/372047/