Pergunta

Então, se minha consulta JPA é assim: Selecione p distinto do Pai p esquerda join fetch fim p.children por p.someProperty

I corretamente obter resultados de volta ordenados por p.someProperty, e eu corretamente obter minha coleção p.children ansiosamente buscado e povoada. Mas eu gostaria de ter a minha consulta ser algo como "ordem por p.someProperty, p.children.someChildProperty" para que a coleção povoada dentro de cada objeto pai foi sub-ordenados por someChildProperty.

Isto parece intuitivo quando eu penso em termos de SQL que é gerado por essas chamadas, mas acho que nem tanto quando se tenta mapear volta para objetos hierárquicos.

Foi útil?

Solução

Para preservar a ordem, use TreeSet . Na medida em que, a triagem de uma coleção dentro pai está em causa, basta fazê-lo em seu código usando Comparador .

Bem, tente isso em sua definição coleção em sua classe de entidade pai. Eu espero que você está recebendo o meu ponto.

Você pode usar esta anotação JPA,

@javax.persistence.OrderBy(value = "fieldName")

ou este específico Hibernate,

@org.hibernate.annotations.OrderBy(clause = "FIELD_NAME asc")

e você também pode usar isso,

@org.hibernate.annotations.Sort(type = SortType.NATURAL)

ou

@org.hibernate.annotations.Sort(type = SortType.COMPARATOR)

No caso do comparador, um comparador devem estar no local. Outros só poderia trabalhar com coleções de corda.

Outras dicas

Adeel, basicamente, tem este pregado. Você também pode usar aqueles com uma lista que pode ser importante se suas coleções contêm a mesma entidade mais de uma vez.

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