Pregunta

Entonces, si mi consulta JPA es así: Seleccione una p distinta de Parent p left join left fetch p.children orden por p.someProperty

Recibí correctamente los resultados ordenados por p.someProperty, y recibí correctamente mi colección p.children con entusiasmo y se completó. Pero me gustaría que mi consulta fuera algo como " order by p.someProperty, p.children.someChildProperty " por lo que la colección que se rellena dentro de cada objeto principal fue subordenada por someChildProperty.

Esto parece intuitivo cuando pienso en términos del sql que realmente se genera para estas llamadas, pero supongo que no tanto cuando intenta mapear de nuevo a objetos jerárquicos.

¿Fue útil?

Solución

Para conservar el orden, utilice TreeSet . En lo que respecta a la clasificación de una colección dentro de la matriz, simplemente hágalo en su código usando Comparator .

Bueno, intente esto en su definición de colección en su clase de entidad principal. Espero que estés entendiendo mi punto.

Puedes usar esta anotación JPA,

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

o este Hibernate específico,

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

y también puedes usar esto,

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

o

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

En el caso del comparador, un comparador debe estar en su lugar. Otros podrían funcionar solo con colecciones de cadenas.

Otros consejos

Adeel básicamente tiene esto clavado. También puede usar aquellos con una Lista que podría ser importante si sus colecciones contienen la misma entidad más de una vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top