I am sorry I am a bit behind on posting the techlist questions, but I have been a bit busy lately with tons of different projects.
This time we have a hibernate question..
From | Lars |
---|
Subject | Hibernate question |
---|
Date | August 27, 2007 16:30:26 |
---|
Hi,
I have a Hibernate question. This is the situation (I ommited rest of annotations etc):
[java]class Organisation {
@OneToMany(cascade=CascadeType.ALL)
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private List allContactDetails;
}
class AbstractContactDetails {
}
[/java]
It is a uni-directional one to many.
Now I want to delete the Organisation and that should cascade to the allContactDetails. That's why I added the Hibernate specific annotation "@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)". In my test code I then do:
organisation.setAllContactDetails(null);
organisationDao.update(organisation);
organisationDao.getHibernateTemplate().flush();
(The flush is there so I can test after the last call as Hibernate only synches with the database with an explicit flush or a select).
This results in the following exception:
Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: domain.Organisation.allContactDetails
I found that a bit strange because I think this is the whole idea behind the all-delete-orphan thing.... I am adding it so Hibernate deletes my orphans and now it complains that it is no longer referenced... Any idea's?
We are using Hibernate 3.2.0.ga and Java 5.
Lars |
From | Silvester van der Bijl |
---|
Subject | RE: Hibernate question |
---|
Date | August 27, 2007 16:33:19 |
---|
Lars,
As far as I know you shouldn't set the collection to null. Does it work when you just clear the list? Don't now how Hibernate handles this, but I'm guessing it needs a reference to the collection to be able to detect which items should be deleted (the orphans).
Silvester |
From | Lars Vonk |
---|
Subject | RE: Hibernate question |
---|
Date | August 27, 2007 16:38:06 |
---|
Great, thanks Silvester that indeed solved it.
Lars |