Es tut mir leid, dass ich mit dem Posten der Techlist-Fragen etwas im Rückstand bin, aber ich war in letzter Zeit mit vielen verschiedenen Projekten beschäftigt. Diesmal haben wir eine Frage zum Ruhezustand...
| Von | Lars |
|---|---|
| Thema | Frage zu Hibernate |
| Datum | August 27, 2007 16:30:26 |
| Hallo, Ich habe eine Frage zu Hibernate. Dies ist die Situation (ich habe den Rest der Anmerkungen usw. weggelassen): [java]class Organisation { [/java] @OneToMany(cascade=CascadeType.ALL) @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN) private List allContactDetails; } class AbstractContactDetails { } Es handelt sich um eine unidirektionale One-to-Many-Anweisung. Jetzt möchte ich die Organisation löschen und das sollte kaskadenartig auf allContactDetails übertragen werden. Deshalb habe ich die Hibernate-spezifische Annotation "@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)" hinzugefügt. In meinem Testcode mache ich dann: organisation.setAllContactDetails(null); organisationDao.update(organisation); organisationDao.getHibernateTemplate().flush(); (Der Flush ist da, damit ich nach dem letzten Aufruf testen kann, da Hibernate nur mit einem expliziten Flush oder einem Select mit der Datenbank synchronisiert). Dies führt zu folgender Ausnahme: Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: domain.Organisation.allContactDetails Ich fand das etwas seltsam, weil ich denke, dass dies die ganze Idee hinter der all-delete-orphan Sache ist.... Ich füge es hinzu, damit Hibernate meine Waisen löscht, und jetzt beschwert es sich, dass es nicht mehr referenziert wird... Irgendeine Idee? Wir verwenden Hibernate 3.2.0.ga und Java 5. Lars | |
| Von | Silvester van der Bijl |
|---|---|
| Betreff: | RE: Frage zu Hibernate |
| Datum | August 27, 2007 16:33:19 |
| Lars, Soweit ich weiß, sollten Sie die Sammlung nicht auf Null setzen. Funktioniert es, wenn Sie die Liste einfach löschen? Ich weiß nicht, wie Hibernate dies handhabt, aber ich vermute, dass es einen Verweis auf die Sammlung benötigt, um zu erkennen, welche Elemente gelöscht werden sollen (die Waisen). Silvester | |
| Von | Lars Vonk |
|---|---|
| Betreff: | RE: Frage zu Hibernate |
| Datum | August 27, 2007 16:38:06 |
| Großartig, danke Silvester, das hat das Problem tatsächlich gelöst. Lars | |
Verfasst von

Erwin van der Koogh
Unsere Ideen
Weitere Blogs
Contact
Let’s discuss how we can support your journey.



