[java] JPA CascadeType.ALL ne supprime pas les orphelins



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.

Question

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.




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

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







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.




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




Related