J'ai des problèmes avec les annotations @OneToMany et @ManyToOne.Problèmes d'annotations Hibernate, Persistence et @OneToMany et @ManyToOne
J'ai deux suites Suite et SuiteVersion. Une SuiteVersion dépend d'une suite. J'ai donc mis en œuvre dans mon code:
Classe Suite:
@OneToMany(mappedBy = "suite")
@Cascade(CascadeType.DELETE_ORPHAN)
private List<SuiteVersion> listSuiteVersion = new ArrayList<SuiteVersion>();
Classe SuiteVersion:
@ManyToOne()
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
private Suite suite;
Mais j'ai un problème quand je supprimer une suite dont ont SuiteVersion associé. Mise en veille prolongée ne supprime pas SuiteVersion avant Suite.I ne sais pas pourquoi parce que je l'ai mentionné dans mon code:
@Cascade(CascadeType.DELETE_ORPHAN)
Ce journal i obtenu lorsque je supprime suite:
Hibernate: delete from SUITE where ID_SUITE=? 13 août 2010 09:40:50 org.hibernate.util.JDBCExceptionReporter logExceptions ATTENTION: SQL Error: -8, SQLState: 23504 13 août 2010 09:40:50 org.hibernate.util.JDBCExceptionReporter logExceptions GRAVE: integrity constraint violation: foreign key no action; FK42895651EA304E6 table: SUITE_VERSION
Remerciez d'avance pour votre aide.
Cordialement,
Florent,
P.S: Désolé pour mon anglais, je suis français.
Vous avez raison. DELETE_ORPHAN fonctionne uniquement lorsque vous supprimez l'entité associée de la collection. (+1) –
Merci, cela m'aide beaucoup. Mais j'ai juste passer à JPa 2.0 avant d'apprendre votre message. À la fin de votre message, vous parlez d'une nouvelle façon standard de gérer les orphelins. Pouvez-vous m'expliquer cette nouvelle façon de traiter cet orphelin? – Delildor
@Delildor: De rien. Concernant les orphelins avec JPA 2.0, voir ma mise à jour. –