2 votes

Conserver une liste avec ordre et doublons en JPA/EclipseLink

Je possède essentiellement deux Entités Entity1 et Entity2. Entity1 contient ce bout de code :

@OneToMany(cascade=CascadeType.PERSIST)
@OrderColumn
List e = new LinkedList();

et Entity2 contient quelques éléments, mais rien de pertinent. Je veux ajouter quelques instances à la liste e, et surtout je veux ajouter quelques doublons (la même référence) deux fois ou plus à la liste. Je veux quand même que JPA persiste les deux éléments et je veux que JPA persiste l'ordre de la liste.

Jusqu'à présent, cela fonctionne, si j'ajoute uniquement des éléments uniques. Si j'ajoute un doublon, JPA veut en fait persister les données correctes (ID de Entity1, ID de Entity2 et l'ordre) mais étant donné que la clé primaire de la table de relation est seulement les deux IDs, JPA lance une erreur de clé primaire en double.

Comment puis-je résoudre cela?

2voto

James Points 18355

EclipseLink ne prend pas actuellement en charge les doublons pour les relations OneToMany. Les doublons sont pris en charge pour les mappages ElementCollection (basiques).

Veuillez voter pour le bogue, https://bugs.eclipse.org/bugs/show_bug.cgi?id=256978

La meilleure solution est de mapper la table de jointure vers une autre entité et définir un 1-m vers celle-ci avec un 1-1 vers la cible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X