Come scrivere un criterio di query con join multipli coinvolti
-
21-08-2019 - |
Domanda
Sto cercando di codice seguente query HQL utilizzando i Criteri API:
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 oggetti :Utente(ID, Nome, Ruolo, Cliente), il Ruolo(ID, Nome) e il Cliente(ID, Nome).
Ho provato ma non funziona perché NHibernate cerca di trovare un Cliente associato con un Ruolo:
var userList = _session
.CreateCriteria(typeof(User))
.CreateCriteria("Role")
.Add(Restrictions.Eq("ID", 3) )
.CreateCriteria("Customer")
.Add(Restrictions.Eq("ID", 1) )
.List<User>();
Qualsiasi altro modo (che funziona!) di farlo?
Soluzione
È possibile utilizzare un 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>();
Speranza che aiuta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow