Hi,
I'd like someone to review my proposed fix of HHH-6361 
(https://github.com/hibernate/hibernate-core/pull/117) for the 3.6 branch.

>From a Hibernate core perspective, this may seem like a minor issue, but it is 
>the cause of HHH-6349, where Envers forever loses the audit information when 
>objects were added to or removed from a collection. Since there is no way to 
>retrieve this information from the database at a later moment, this is really 
>bad from the Envers (auditing) perspective.

The proposed fix causes both the provided testcase for HHH-6361 (the Hibernate 
core issue) and the testcase for HHH-6349 (the Envers issue) to pass by 
ensuring that after a merge() operation the snapshot value of the collection, 
as obtained by collectionEntry.getSnapshot(), corresponds with the database 
contents. This is a good thing, of course.

However, apart from the possible performance implication (though I'm not sure 
if there's a remedy for this), I am a bit worried about the fact that I had to 
fix a unit test in the Hibernate testsuite 
(org.hibernate.test.manytomanyassociationclass.compositeid.ManyToManyAssociationClassCompositeIdTest)
 to make the 3.6 build succeed. As a rule, that's a bad sign.

What happens is that after the patch this test crashes with an NPE in the 
hashCode() method of MembershipWithCompositeId.Id class. The reason of the NPE 
is that MembershipWithCompositeId now has a non-null "Id" property, with a null 
value of the userId and groupId properties. Even though it was easy to fix the 
test by overriding the deleteMembership()-method in 
ManyToManyAssociationClassCompositeIdTest by setting the "Id" property of 
MembershipWithCompositeId to null, this doesn't feel good to me.

I'd really like to see a fix for HHH-6361 without these changes in 
ManyToManyAssociationClassCompositeIdTest, but I couldn't find one. Any help 
there would be appreciated of course.

After an initial review, I'd be more than happy to provide a fix for the 
Hibernate 4.0.x series, which is also plagued by the same bug.

Regards,
Erik-Berndt

Disclaimer:
This message contains information that may be privileged or confidential and is 
the property of Sogeti Nederland B.V. or its Group members. It is intended only 
for the person to whom it is addressed. If you are not the intended recipient, 
you are not authorized to read, print, retain, copy, disseminate, distribute, 
or use this message or any part thereof. If you receive this message in error, 
please notify the sender immediately and delete all copies of this message.
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to