Comment une écriture d'une requête de critères jointures multiples impliqués
-
21-08-2019 - |
Question
Je suis en train de coder la requête HQL suivante en utilisant l'API Critères:
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 objets NHibernate. Utilisateur (ID, nom, Rôle, clients), Rôle (ID, nom) et le client (ID, nom)
J'ai essayé ce qui suit, mais il ne fonctionne pas parce que NHibernate essaie de trouver un client associé à un rôle:
var userList = _session
.CreateCriteria(typeof(User))
.CreateCriteria("Role")
.Add(Restrictions.Eq("ID", 3) )
.CreateCriteria("Customer")
.Add(Restrictions.Eq("ID", 1) )
.List<User>();
Toute autre façon (qui fonctionne!) De le faire?
La solution
Vous pouvez utiliser alias
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>();
it helps
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow