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
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 @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 }
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
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 }
comme je l'ai dit tout precedement pour les autres entités comme ici dans cet exemple la supression de menu et role fonctionne
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 }
voici le code si besoin de la methode de suppression
Cordialement
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)); }
Partager