Bonjour,
Nous travaillons actuellement sur une application à base de spring et d'hibernate. Cette application gère des utilisateurs, des roles et des groupes en base de données.
Voici les associations entre ces différents objets :
un utilisateur a 1 ou plusieurs rôles,un utilisateur a 1 ou plusieurs groupes, un rôle a 1 ou plusieurs utilisateurs, un rôle a un ou plusieurs groupes, un groupe a un ou plusieurs utilisateurs et un ou plusieurs rôles.
Au niveau des classes java voici ce que cela donne :
Pour la classe User
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
    @ManyToMany(targetEntity=Role.class,mappedBy="users")
    private List<Role> roles;
 
    @ManyToMany(targetEntity=Groupe.class,mappedBy="users")
    private List<Groupe> groups;
Pour la classe Role:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
        @ManyToMany(targetEntity=User.class,fetch=FetchType.LAZY)
	@JoinTable(name="userRole",
        joinColumns={@JoinColumn(name="role_id")},
        inverseJoinColumns={@JoinColumn(name="user_id")})
	private List<User> users;
 
	@ManyToMany(targetEntity=Groupe.class,fetch=FetchType.LAZY)
	@JoinTable(name="groupRole",
        joinColumns={@JoinColumn(name="role_id")},
        inverseJoinColumns={@JoinColumn(name="group_id")})
	private List<Groupe> groups;
et pour la classe Groupe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
        @ManyToMany(targetEntity=User.class)
	@JoinTable(name="userGroup",
        joinColumns={@JoinColumn(name="group_id")},
        inverseJoinColumns={@JoinColumn(name="user_id")})
	private List<User> users;
 
	@ManyToMany(targetEntity=Role.class,mappedBy="groups")
	private List<Role> roles;
Notre problème est que lorsque l'on enregistre un utilisateur 10 fois avec un groupe, la relation entre l'utilisateur et le groupe se retrouve 10 fois dans la table de jointure entre User et Groupe. Ceci est-il normal, dans le sens ou doit-on gérer nous même l'unicité d'une relation entre un utilisateur et un groupe ? Y a-t-il un problème dans notre conception notamment au niveau des relations many-to-many ?

Merci d'avance pour vos réponses.