@OneToMany Liste<> vs Set<> différence
Est-il une différence si j'utilise
@OneToMany
public Set<Rating> ratings;
ou si j'utilise
@OneToMany
public List<Rating> ratings;
à la fois le travail OK, je connais la différence entre une liste et un ensemble, cependant, je ne sais pas si cela fait une différence comment mettre en veille prolongée (ou plutôt JPA 2.0) qu'il gère.
Vous devez vous connecter pour publier un commentaire.
Une liste, si il n'y a pas d'indice de colonne spécifié, va juste être traitée comme un sac par Hibernate (pas de classement spécifique).
Une différence notable dans le traitement de Hibernate est que vous ne pouvez pas récupérer deux listes différentes dans une seule requête. Par exemple, si vous avez un
Person
entité ayant une liste de contacts et une liste d'adresses, vous ne serez pas en mesure d'utiliser d'une seule requête à la charge des personnes avec tous leurs contacts et leurs adresses. La solution dans ce cas est de faire deux requêtes (ce qui évite le produit cartésien), ou d'utiliser unSet
au lieu d'unList
pour au moins l'une de ces collections.Il est souvent difficile d'utiliser des Ensembles avec mise en veille prolongée lorsque vous devez définir
equals
ethashCode
sur les entités et n'ont pas immuable fonctionnel clé dans l'entité.Si vous utilisez une Liste, vous pouvez spécifier un "trier PAR" clause en fonction get. Vous ne pouvez pas faire cela avec un Ensemble. La clause order by peut contenir partielle EJBQL; Par exemple
Si vous laissez ce champ vide, alors la liste est triée dans l'ordre croissant en fonction de la valeur de la clé primaire.
@Sort
une juste utilisationSortedSet
comme expliqué dans la doc.