@OneToMany List vs Set difference

C’è qualche differenza se io uso

@OneToMany public Set ratings; 

o se io uso

 @OneToMany public List ratings; 

entrambi funzionano bene, conosco la differenza tra la lista e un set, tuttavia non so se questo faccia la differenza come lo gestisca l’ibernazione (o piuttosto JPA 2.0).

Un elenco, se non è stata specificata alcuna colonna di indice, verrà gestito come una borsa da Hibernate (senza ordini specifici).

Una differenza notevole nella gestione di Hibernate è che non è ansible recuperare due elenchi diversi in una singola query. Ad esempio, se si dispone di un’ quadro Person con un elenco di contatti e un elenco di indirizzi, non sarà ansible utilizzare una singola query per caricare persone con tutti i loro contatti e tutti i loro indirizzi. In questo caso, la soluzione consiste nel creare due query (che evitano il prodotto cartesiano) o utilizzare un Set anziché un List per almeno una delle raccolte.

Spesso è difficile usare gli insiemi con Hibernate quando devi definire equals e hashCode sulle entity framework e non avere una chiave funzionale immutabile nell’entity framework.

Se si utilizza un elenco, è ansible specificare una clausola ‘Ordine 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 ratings; 

Se si lascia vuoto questo campo, la lista viene ordinata in ordine crescente in base al valore della chiave primaria.