Risposte:
Un elenco, se non è specificata una colonna indice, verrà gestito come un sacchetto da Hibernate (nessun ordine specifico).
Una differenza notevole nella gestione di Hibernate è che non è possibile recuperare due elenchi diversi in una singola query. Ad esempio, se hai Personun'entità con un elenco di contatti e un elenco di indirizzi, non sarai in grado di utilizzare una singola query per caricare le persone con tutti i loro contatti e tutti i loro indirizzi. La soluzione in questo caso è fare due interrogazioni (che evita il prodotto cartesiano), oppure usare a Setinvece di a Listper almeno una delle collezioni.
Spesso è difficile usare Set con Hibernate quando devi definire equalse hashCodesulle entità e non hai una chiave funzionale immutabile nell'entità.
Se utilizzi un elenco, puoi specificare una clausola "Order BY" nella funzione getter. Non puoi farlo con un set. La clausola order by può contenere EJBQL parziale; Per esempio
@OneToMany
@OrderBy("lastname ASC")
public List<Rating> ratings;
Se lasci vuoto questo campo, l'elenco viene ordinato in ordine crescente in base al valore della chiave primaria.
@Sort un set - basta usare SortedSetcome spiegato nei documenti .
@OrderBysu Set. Sotto, Hibernate userà OrderedSetTypeche istanzerà un LinkedHashSet, quindi l'ordine è preservato. Inoltre suggerirei di utilizzare LinkedHashSetin entità - per motivi di coerenza. Fonte: discourse.hibernate.org/t/…