Hibernate/GORM: collection was not processed by flush()

Dónal picture Dónal · Nov 9, 2009 · Viewed 15.4k times · Source

I have an integration test in my Grails application that fails when I try to save an entity of type Member

invitingMember.save(flush: true)

This raises the following exception

org.hibernate.AssertionFailure: collection [com.mycompany.facet.Facet.channels] was not processed by flush() at com.mycompany.member.MemberConnectionService.addOrUpdateContact(MemberConnectionService.groovy:939)

Earlier in the transaction I add an object to a collection property of invitingMember. My guess is that the exception is thrown at the line above, because it's only at this point that the object added to the collection is persisted.

Answer

Aaron Digulla picture Aaron Digulla · Nov 9, 2009

The underlying problem is probably that Hibernate doesn't cascade the save. So when you flush the Member, Hibernate notices that the collection is still dirty (which is probably not what you want). So either flush the collection manually or tell Hibernate to cascade all the updates.