Bonjour.

J'ai quelques soucis à me reprensenter les actions qui sont engendrées par les définitions de cascade.
Sur les relation @OneToMany et @ManyToOne pas trop de problèmes mais pour les @ManyToMany je seche un peu.

Question 1 : J'ai deux entités en @ManyToMany "User" et "Role" sachant que la navigation est unidrectionnelle par la classe "User"

Je souhaite mettre à jour la liste de role d'un utilisateur sans pouvoir modifier , par cascade, les éléments roles

Voici ce que j'ai fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
    @ManyToMany(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH})
    @JoinTable(name = "USERS_HAVE_ROLES",
            joinColumns = {
        @JoinColumn(name = "IdUser")
    },
            inverseJoinColumns = {
        @JoinColumn(name = "IdRole")
    })
    private List<Role> roles;
Est ce que ca vous semble correcte ?

Question 2 : Imaginons que le cas 1 soit en cascade.ALL, si je supprime un role dans l'instance de la classe user est ce que je supprime juste la relation dans la table de jointure ou je supprime aussi physiquement le rôle ?

En remerciant ceux qui prendraient le temps de me répondre