Bonjour,
Le sujet à déjà été traité mais jamais d'une façon claire :
Voila j'ai un parent qui à plusieurs fils
Parent
FILSCode:
1
2 @OneToMany(targetEntity=Fils.class,mappedBy="parent",cascade={CascadeType.ALL}) private Set<Fils> fils = new HashSet<Fils>();
Code:
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:
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:
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