Pergunta

Eu tenho um objeto que é mapeado para ter um conjunto de objetos, muito simples. No entanto, o que eu realmente quero fazer é colocar alguns critérios em que o mapeamento. Aqui está o mapeamento atual:

    <set name="ops" inverse="true" cascade="all, delete-orphan">
        <key column="cityblock_id" on-delete="cascade"/>
        <one-to-many class="com.tamedtornado.data.Operation"/>
    </set>

Agora, em vez de apenas recebendo todos ops associados, quero apenas ficar ops que não tenham concluído ou tem, ou o que quer. Os docs Hibernate são muito tranquilos sobre isso, embora alguns velhos posts no fórum tem me mostrado um pouco. aparentemente, você pode usar um tag sql-query, mas isso também não é o que eu quero fazer.

Existe uma maneira de fazer isso com uma consulta HQL? Eu só quero restringir os resultados com uma consulta simples e tem alguns mapas de coleta, como active_ops e completed_ops, etc.

Cheers, Jason

Foi útil?

Solução

6.2. mapeamento de coleção na documentação do Hibernate você vai achar que você pode usar uma cláusula WHERE em qualquer mapeamento da coleção:

, onde (opcional) especifica um comando SQL WHERE arbitrário para ser usado quando da recuperação ou remover a coleção (útil se a coleção deve conter apenas um subconjunto dos dados disponíveis)

Você disse que você quiser usar uma consulta HQL, mas eu não acho que isso é possível. Mas, como você só tem que especificar uma simples cláusula WHERE em seu mapeamento não há realmente muita diferença, entre HQL e SQL "real".

Outras dicas

Eu não tenho certeza se entendi sua pergunta claramente, mas parece que você precisa usar uma cláusula WHERE na sua consulta SQL

Você deve ser capaz de usar uma cláusula onde, em sua HQL ou usar a api critérios em hibernação para alcançar os resultados desejados:

Supondo que você tem um campo chamado status para "ativo" ou "concluído" o seu HQL deve ser algo como isto:

from ops where status="active"

ou se estiver usando a API critérios:

List activeOperations = sess.createCriteria(Operation.class)
    .add( Restrictions.equals("status", "active") )
    .list();

Os capítulos 14 e 15 do hibernate tutorial falar um pouco sobre isso: http://www.hibernate.org/hib_docs/v3/ referência / en / html / index.html

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