2008-12-16 58 views
2

我試圖使用標準的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

您可以使用別名

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

希望它可以幫助

+0

輝煌!謝謝。 – bounav 2008-12-17 10:40:24