[hibernate-issues] [Hibernate-JIRA] Created: (HHH-4897) onFlushDirty not called if only modification was to a collection of elements

Rob West (JIRA) noreply at atlassian.com
Tue Feb 9 17:17:29 EST 2010


onFlushDirty not called if only modification was to a collection of elements
----------------------------------------------------------------------------

                 Key: HHH-4897
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4897
             Project: Hibernate Core
          Issue Type: Bug
          Components: core
    Affects Versions: 3.3.2, 3.3.1
            Reporter: Rob West
         Attachments: InterceptorTest.jar

We are not seeing onFlushDirty get called if the only modification to a Hibernate-mapped entity is to a collection of elements (e.g. a Set<String> that maps to entries in a related table).  It appears that for purposes of calling onFlushDirty, a collection property of an entity can only be considered dirty if that entity is versioned (it may still not be dirty, but it cannot be dirty unless the entity is versioned).  For purposes of actually executing SQL, the collection property is properly considered to be dirty based on a call to PersistentCollection.isDirty(), but this prevents an interceptor from acting on the modifications.

I've attached a jar file that contains (source) modifications to the InterceptorTest to add an additional test case highlighting this, along with modifications to User.java and User.hbm.xml to add an additional collection of elements property.  The assertNotNull on line 66 (the check of last updated) fails for me locally with the latest hibernate source downloaded from hibernate.org, which appears to be 3.3.2.  We currently use 3.3.1 in production.

My original forum post is at https://forum.hibernate.org/viewtopic.php?f=1&t=1002411, which contains some additional debugging information while I was figuring out what was going on.

As a note: I left the priority here the default.  This is a pretty serious issue for us though, as one of the key things we do with interceptors is auditing of changes, and this means that sometimes certain properties do not get audited.  We haven't been able to identify any straightforward workaround to implement that is not either fairly invasive or leaves us open to introducing other equally or more serious bugs in our code.  Suggestions welcome.

-- 
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