Bonjour,
Le sujet à déjà été traité mais jamais d'une façon claire :
Voila j'ai un parent qui à plusieurs fils
Parent
FILS
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @OneToMany(targetEntity=Fils.class,mappedBy="parent",cascade={CascadeType.ALL}) private Set<Fils> fils = new HashSet<Fils>();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @ManyToOne(optional=false) @JoinColumn(name="Parent_CODE",nullable=false,referencedColumnName="CODE") private Parent parent;
Pour moi l'avantage des JPA c'est de ne plus se préoccuper de l'intégrité référentielle hors c'est pas ce que je constate
Quand je supprime un parent il faut que tous les fils soient supprimer automatiquement
hors
Mais la ça ne marche pas pour une raison évidente d'intégrité ......
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Parent p = //parent que je veux supprimer em = emf.createEntityManager(); em.getTransaction().begin(); Query q = em.createNamedQuery(REM_PARENT); q.setParameter("code", p.getCode()); q.executeUpdate(); em.getTransaction().commit(); em.close();
ja suis obligé de faire une boucle pour supprimer les fils un à un pour que ça marche :
Ou est la logique ? et que l'offre les JPA dans ce cas. ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Parent p = //parent que je veux supprimer em = emf.createEntityManager(); em.getTransaction().begin(); for (Fils f : a.getFils()) em.remove(em.find(Fils.class, f.getId())); Query q = em.createNamedQuery(REM_PARENT); q.setParameter("code", p.getCode()); q.executeUpdate(); em.getTransaction().commit(); em.close();
Merci
Partager