Bonjour.

J'ai une relation ManyToMany entre une classe "Collection" et une classe "Tableau".

Un collection contient donc plusieurs Tableaux et un Tableau peut appartenir à plusieurs collections.

J'ai donc une table de jointure auto-générée, mais le problème, c'est que j'ai autant de Tableaux dans ma table Tableaux que d'associations dans la table de jointure.

Pour faire plus clair: Si j'ai 3 Collections qui contiennent chacune 2 Tableaux qui se retrouvent dans une des 2 autres collections, j'ai ceci:

ColA Tableau1, Tableau2
ColB Tableau2, Tableau3
ColC Tableau1, Tableau4

Dans mes tables j'ai après insertion:

TAble "Collections" (ok)
----------------
ColA
ColB
ColC

Table de jointure "Collection_Tableau" (ok)
----------------------------------
ColA Tableau1
ColA Tableau2
ColB Tableau2
ColB Tableau3
ColC Tableau1
ColC Tableau4


Table "Tableaus" (pas ok, j'ai des doublons)
--------------
Tableau1
Tableau1
Tableau2
Tableau2
Tableau3
Tableau4

--> Le problème est donc que dans ma table "Tableaux", je me retrouve avec des doublons, au lieu d'avoir une seule fois Tableau 1, une seule fois Tableau2 et ainsi de suite.

Voici mon mapping
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
class Collection...
 
    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "Collection_Tableau", joinColumns = @JoinColumn(name = "collection_ID"),
    inverseJoinColumns = @JoinColumn(name = "Tableau_ID"))
    private List<Tableau> listTableaux;
Pour persister mes infos, en gros je fais:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
tableau1 = new Tableau();
tableau2 = new Tableau();
tableau3 = new Tableau();
tableau4 = new Tableau();
 
maColA.add(tableau1);
maColA.add(tableau2);
persist(maColA);
 
maColB.add(tableau2);
maColB.add(tableau3);
persist(maColB);
 
maColA.add(tableau1);
maColA.add(tableau4);
persist(maColC);
Je persiste donc mes Tableaux via le CascadeType.ALL de la Collection.

Avoir des doublons dnas ma table "Tableaux" n'est bien sûr pas souhaité.
Que puis-je faire pour ne plus avoir ces doublons ?

Grand merci