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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira