java delete one - JPA CascadeType.ALL ne supprime pas les orphelins




5 Answers

Si vous utilisez JPA 2.0, vous pouvez maintenant utiliser l' orphanRemoval=true de l'annotation @xxxToMany pour supprimer les orphelins.

En fait, CascadeType.DELETE_ORPHAN a été déprécié en 3.5.2-Final.

to many orphanremoval

J'ai des difficultés à supprimer des noeuds orphelins en utilisant JPA avec le mappage suivant

@OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner")
private List<Bikes> bikes;

J'ai le problème des rôles orphelins qui traînent autour de la base de données.

Je peux utiliser l'annotation org.hibernate.annotations.Cascade Hibernate tag spécifique mais évidemment je ne veux pas lier ma solution dans une implémentation Hibernate.

EDIT : Il semble que JPA 2.0 inclura un support pour cela.







Selon Java Persistence avec Hibernate , la suppression orpheline en cascade n'est pas disponible en tant qu'annotation JPA.

Il n'est également pas pris en charge dans JPA XML.




Juste @OneToMany(cascade = CascadeType.ALL, mappedBy = "xxx", fetch = FetchType.LAZY, orphanRemoval = true) .

Enlevez targetEntity = MyClass.class , c'est très bien.




Pour les records, dans OpenJPA avant JPA2 c'était @ElementDependant.




Related