Pergunta

Eu estou tentando código a seguinte consulta HQL usando a API Criteria:

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 objetos:. Do usuário (ID, Nome, Função, o Cliente), Interpretação (ID, Name) eo Cliente (ID, Name)

Eu tentei o seguinte mas não funciona porque NHibernate tenta encontrar um cliente associado a uma função:

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

Qualquer outra forma (que funciona!) De fazê-lo?

Foi útil?

Solução

Você pode usar o apelido

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>();

Hope isso ajuda

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top