Bonjour!
J'ai une application dans laquelle j'ai des relations entre autres des relations 1-n.J'effectue normalement la suppression de ces entités mais lorsque je veux supprimer une classe association decoulant d'une relation n-aire,la suppression passe bref pas d'erreur même lors des tests mais je retrouve toujours l'enregistrement au niveau de la bd.voici un exemple de code pour illustrer ce que je dis.
l'entité role
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
 
@Entity
@Table(name = "role")
public class Role implements DAOEntry {
       @Id 
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Column(name = "Id")
    private Long id;
 
    @Size(min = 1, max = 254)
    @Column(name = "code",nullable=false,unique=true)
    private String code;
 
    //relation avec la table User
    @OneToMany(mappedBy = "roleid")
    private Collection<User> userCollection;
 
     //relation avec la table Role
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "role")
    private Collection<Rolemenu> rolemenuCollection;
    public Role() {
    }
//getter/setters
 
}
l'entite menu

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
27
28
29
30
31
32
33
/
@Entity
@Table(name = "menu")
public class Menu implements DAOEntry {
      @Id @GeneratedValue(strategy= GenerationType.AUTO)
    @Column(name = "Id")
    private Long id;
    @Column(name = "code",nullable=false,unique=true)
    private String code;
 
 
 
    //relation avec la table Role
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "menu")
    private Collection<Rolemenu> rolemenuCollection;
 
    //relation avec la table User
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "menu")
    private Collection<Usermenu> usermenuCollection;
 
    //relation avec la table Module
    @JoinColumn(name = "Moduleid", referencedColumnName = "Id")
    @ManyToOne
    private Modulesecurite moduleid;
 
    public Menu() {
    }
 
    public Menu(String code) {
        this.code = code;
    }
//getters/setters
}
voici l'entité que je veux supprimer RoleMenu

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
27
28
29
30
31
32
 
@Entity
@Table(name = "rolemenu")
 
public class Rolemenu implements DAOEntry {
 
    @EmbeddedId
    protected RolemenuPK rolemenuPK;
 
 
    @JoinColumn(name = "Menu_id", referencedColumnName = "Id", insertable = false, updatable = false)
    @ManyToOne(fetch=FetchType.EAGER,optional = false)
    private Menu menu;
 
    @JoinColumn(name = "Role_id", referencedColumnName = "Id", insertable = false, updatable = false)
    @ManyToOne(fetch=FetchType.EAGER,optional = false)
    private Role role;
 
    public Rolemenu() {
         this.rolemenuPK = new RolemenuPK();
    }
 
    public Rolemenu(RolemenuPK rolemenuPK) {
        this.rolemenuPK = rolemenuPK;
    }
 
    public Rolemenu(Long codeMenu, Long codeRole) {
        this.rolemenuPK = new RolemenuPK(codeMenu, codeRole);
    }
//getters/setters
 
}
comme je l'ai dit tout precedement pour les autres entités comme ici dans cet exemple la supression de menu et role fonctionne

voici le code si besoin de la methode de suppression

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
  public void delete(T entry) {
        //il est important de rendre l 'etat de l'entite persistant
        this.getEntityManager().remove(this.getEntityManager().merge(entry));
 
    }
Cordialement