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?

War es hilfreich?

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