Bonjour, J'ai implémenté une relation de type ManyToMany entre CRMUser et Privilege comme suit:

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
18
19
20
21
22
23
24
25
26
 
public class CRMUser implements Serializable{
        ........
	private Set<Privilege> privileges = new HashSet<Privilege>();
 
        @ManyToMany(cascade ={CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER )
	@JoinTable( name="CRMUSERS_PRIVILEGES",
    			joinColumns={@JoinColumn(name="USER_ID")},
    			inverseJoinColumns={@JoinColumn(name="PRIVILEGE_ID")}
	)	
	public Set<Privilege> getPrivileges() {
		return privileges;
	}
        .........
}
 
public class Privilege implements Serializable{
        ...........
	private Set<CRMUser> users = new HashSet<CRMUser>();
        ...........
        @ManyToMany(mappedBy="privileges", cascade ={CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER )
	public Set<CRMUser> getUsers() {
		return users;
	}
        ......................
}
quand j'insère un crmuser avec sa liste de privileges à l'aide d'un form comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<form:form action="${addAction}" commandName="user">
..................................................................................................................
    <form:label class="control-label" path="privileges">User Privielege(s)</form:label>
        <div class="controls">
	    <form:select path="privileges" items="${prvlgs}" multiple="true" itemValue="privilegeID" itemLabel="privilege" class="form-control input-sm" data-rel="chosen"/>                       
       </div>
..............................................................................................
</form:form>
l'insertion se fait correctement sauf pour la table privileges c'est les identifiants qui sont insérés comme des nouveaux privileges et c'est les identifiants de nouveaux privileges qui sont insérés dans la table de jointure est c'est ça que j'ai comme résultat dans mon formulaire et la table des utilisateurs :

Nom : listePrivileges.PNG
Affichages : 231
Taille : 3,1 Ko
Nom : nouvCRMUser.PNG
Affichages : 204
Taille : 7,0 Ko

ma question est : SVP comment je peux ajouter un crmuser avec sa liste de privileges sans faire une insertion au niveau de la table privilege et que l'insertion au niveau de la table de jointure soit correcte ?