Pergunta

Como pode um objeto ser carregado via Hibernate com base em um valor de campo de um objeto membro? Por exemplo, suponha que as seguintes classes existiu, com um relacionamento um-para-um entre bar e foo:

Foo {
    Long id;
}

Bar {
    Long id;
    Foo aMember;
}

Como poderia um usam critérios do Hibernate para carregar Bar se você só tinha o id do Foo?

A primeira coisa que pulou na minha cabeça foi para carregar o objeto Foo e conjunto que como critério para carregar o objeto Bar, mas que parece um desperdício. Existe uma maneira eficaz de fazer isso com critérios, ou é HQL a forma como este deve ser tratado?

Foi útil?

Solução

Você pode absolutamente usar Critérios de uma maneira eficiente para fazer isso:

session.createCriteria(Bar.class).
        createAlias("aMember", "a").
        add(Restrictions.eq("a.id", fooId));

deve fazer o truque.

Outras dicas

Você pode usar critérios ou HQL.

HQL exemplo:

Consulta query = session.createQuery ( "do Bar como bar onde bar.aMember.id =: fooId");

query.setParameter ( "fooId", fooId);

Lista result = Query.list ();

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