CF ORM – A collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance


CF ORM – A collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance

Posted by Luis Majano
Jan 17, 2012 22:17:25 UTC
Have you experienced this incredibly odd error using ColdFusion ORM:

HibernateException – A collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance

This is really cryptic and most likely you have a parent to child relationship and you are most likely wiping or wanting to wipe all the references of the child.  We usually can do this via:

// wipe out the children

parent.setChildren( [] )

We then proceed to maybe put more children into the collection:

parent.addChild( objX );

parent.addChild( objY );

// Now save

transaction{

entitySave( parent );

}

This is where you get that magical Hibernate error. The issue is that the existing collection is now de-referenced, you completely wiped it so Hibernate has no clue what to do with it. So to resolve this, just clear the collection instead and voila!

// use java

parent.getChildren().clear();

// or use CF

arrayClear( parent.getChildren() );

That's it, this tells Hibernate that the collection is removed first and then you added some more children.


existdissolve

As always, you have the answer I was looking for. Thanks a bunch!