[hibernate-issues] [Hibernate-JIRA] Resolved: (HHH-2751) MappedSuperclass + M:N relation + PostUpdateListener = AssertionFailure: collection [xyz] was not processed by flush()

Diego Pires Plentz (JIRA) noreply at atlassian.com
Mon Sep 10 19:07:14 EDT 2007


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2751?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Diego Pires Plentz resolved HHH-2751.
-------------------------------------

      Assignee: Diego Pires Plentz
    Resolution: Duplicate

> MappedSuperclass + M:N relation + PostUpdateListener = AssertionFailure: collection [xyz] was not processed by flush()
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: HHH-2751
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2751
>             Project: Hibernate3
>          Issue Type: Bug
>    Affects Versions: 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.4.sp1
>         Environment: Windows-XP, Jboss 4.2 GA, Hibernate 3.2.1GA, EJB3
>            Reporter: S.Schnabl
>            Assignee: Diego Pires Plentz
>         Attachments: Hibernate-TestCase.rar, Hibernate-TestCase_updated.rar
>
>
> For more details see the attached testcase. I'm sorry, but in the short of time i only got a testcase for jboss-server 4.2. Please deploy the server.ear from /release-directory and then call the /src/client/TestCaseClient.java.
> Explanation:
> I have  two entities A.class and B.class defined, both inheriting from an common (empty) abstract MappedSuperclass. A and B having a m:n relation between each other. Furthermore there is an PostUpdateListener, which iterates through all properties of updated entities.
> Testcase:
> Both entities are linked with each (m:n), now i do an update of a simple property of entity A --> MyPostUpdateListener will be called, which iterates through each property of the updated entity(ies). In case of this property was a collection (= property of the m:n relation), the listener  furthermore iterates through this collection and get the id of each object in  the collection. Doing so will raise following exception :
> Caused by: org.hibernate.AssertionFailure: collection [com.qualitype.testcase.server.ejb.entity.EntityB.entitiesOfA] was not processed by flush()
> 	at org.hibernate.engine.CollectionEntry.postFlush(CollectionEntry.java:205)
> 	at org.hibernate.event.def.AbstractFlushingEventListener.postFlush(AbstractFlushingEventListener.java:333)
> 	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:28)
> 	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
> 	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
> 	at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:515)
> 	... 29 more
> Summarized these error will only occur, in case we are inherating from a mappedSuperClass, having a m:n relation  and having the listener touching the collection-elements. But these scenario isn'n very uncommon. We are using hibernate-event listener system for auditing-purposes, so you should understand that touching ever (element in the) collectin is necessary for audit-purposes.
> Seems for me like a bug. Need this fixed asap ...

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list