Domanda

Quindi se la mia query JPA è così: Seleziona p distinto da Parent p sinistra unisci recupera ordine p.children per p.someProperty

Ricevo correttamente i risultati ordinati da p.someProperty e ricevo correttamente la mia collezione p.children recuperata e popolata con entusiasmo. Ma vorrei che la mia query fosse simile a " ordina per p.someProperty, p.children.someChildProperty " in modo che la raccolta popolata all'interno di ciascun oggetto padre sia stata ordinata da someChildProperty.

Questo sembra intuitivo quando penso in termini di sql che viene effettivamente generato per queste chiamate, ma credo di meno quando tenta di mappare gli oggetti gerarchici.

È stato utile?

Soluzione

Per conservare l'ordine, utilizzare TreeSet . Per quanto riguarda l'ordinamento di una raccolta all'interno del genitore, basta farlo nel codice usando Comparatore .

Bene, prova questo sulla definizione della tua raccolta nella classe entità padre. Spero che tu ottenga il mio punto.

Puoi utilizzare questa annotazione JPA,

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

o questo specifico ibernazione,

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

e puoi anche usarlo,

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

o

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

Nel caso di un comparatore, deve essere presente un comparatore. Altri potrebbero funzionare solo con raccolte String.

Altri suggerimenti

Adeel ha praticamente inchiodato questo. Puoi anche utilizzare quelli con un Elenco che potrebbe essere importante se le tue raccolte contengono la stessa entità più di una volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top