2 Stimmen

Wie schreibt man eine Criteria-Abfrage mit mehreren beteiligten Verknüpfungen?

Ich versuche, die folgende HQL-Abfrage mit der Criteria-API zu codieren:

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 : User(ID, Name, Role, Customer), Role(ID, Name) und Customer(ID, Name).

Ich habe Folgendes versucht, aber es funktioniert nicht, weil NHibernate versucht, einen Kunden zu finden, der mit einer Rolle verbunden ist:

var userList = _session
            .CreateCriteria(typeof(User))
            .CreateCriteria("Role")
            .Add(Restrictions.Eq("ID", 3) )
            .CreateCriteria("Customer")
            .Add(Restrictions.Eq("ID", 1) )
            .List<User>();

Gibt es eine andere Möglichkeit (die funktioniert!), dies zu tun?

4voto

Magnus Bertilsson Punkte 615

Sie können den 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>();

Ich hoffe, es hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X