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?

È stato utile?

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
scroll top