Question

Je suis en train de coder la requête HQL suivante en utilisant l'API Critères:

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 objets NHibernate. Utilisateur (ID, nom, Rôle, clients), Rôle (ID, nom) et le client (ID, nom)

J'ai essayé ce qui suit, mais il ne fonctionne pas parce que NHibernate essaie de trouver un client associé à un rôle:

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

Toute autre façon (qui fonctionne!) De le faire?

Était-ce utile?

La solution

Vous pouvez utiliser 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>();

it helps

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top