[hibernate-issues] [Hibernate-JIRA] Created: (HHH-2882) QueryKey.equals() returning false with distributed caching

Daniel Campagnoli (JIRA) noreply at atlassian.com
Mon Oct 8 04:09:39 EDT 2007


QueryKey.equals() returning false with distributed caching
----------------------------------------------------------

                 Key: HHH-2882
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2882
             Project: Hibernate3
          Issue Type: Bug
          Components: query-criteria
    Affects Versions: 3.2.5
            Reporter: Daniel Campagnoli


We noticed some issues recently with the query cache when using Coherence as the cache provider. This was due to instances of org.hibernate.cache.QueryKey not being equal after being serialized then deserialized. 

The equals check was failing on the [ResultTransformer customTransformer] field which in our case had an instance of RootEntityResultTransformer (which comes from the field CriteriaSpecification.ROOT_ENTITY).  This is because RootEntityResultTransformer doesnt override equals, so the check is done by reference equality.  When the QueryKey has been serialized and deserialized out of the cache, the instance will always be different, so the equals check will fail.

A fix for this to be implement equals for RootEntityResultTransformer (and possibly the other ResultTransformer's).  I used the following which worked fine.

public boolean equals(Object obj) {
	return obj != null && this.getClass() == obj.getClass();
}

ps. I created HHH-1665 a while ago, a real simple fix, could that be looked at :)

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