Wie man einen Schreib eine Criteria Abfrage mit mehreren beteiligten Joins
-
21-08-2019 - |
Frage
Ich versuche, die folgende HQL Abfrage mit dem Criteria API-Code:
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 Objekte:. Benutzer (ID, Name, Rolle, Kunde), Rolle (ID, Name) und Kunde (ID, Name)
Ich habe versucht, die folgend, aber es funktioniert nicht, weil NHibernate einen Kunden mit einer Rolle zugeordnet zu finden versucht:
var userList = _session
.CreateCriteria(typeof(User))
.CreateCriteria("Role")
.Add(Restrictions.Eq("ID", 3) )
.CreateCriteria("Customer")
.Add(Restrictions.Eq("ID", 1) )
.List<User>();
Eine andere Art und Weise (das funktioniert!), Es zu tun?
Lösung
Sie können mit 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>();
Hoffe, es hilft
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow