Here is the portion of the stacktrace you are probably most interested in: [ERROR] 13:13:14 org.apache.jcs.engine.control.CompositeCache.get - java.lang.ClassCastException at net.sf.hibernate.cache.QueryKey.equals(QueryKey.java:35) at java.util.Hashtable.remove(Hashtable.java:434) at org.apache.jcs.engine.memory.lru.LRUMemoryCache.remove(LRUMemoryCache.java:274) at org.apache.jcs.engine.control.CompositeCache.remove(CompositeCache.java:727) at org.apache.jcs.engine.control.CompositeCache.remove(CompositeCache.java:690) at org.apache.jcs.engine.control.CompositeCache.get(CompositeCache.java:490) at org.apache.jcs.engine.control.CompositeCache.get(CompositeCache.java:440) at org.apache.jcs.access.CacheAccess.get(CacheAccess.java:236) at net.sf.hibernate.cache.JCSCache.get(JCSCache.java:30) at net.sf.hibernate.cache.QueryCache.get(QueryCache.java:61) at net.sf.hibernate.hql.QueryTranslator.find(QueryTranslator.java:964) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1483)
Here is my cache.ccf file: jcs.default= jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.default.cacheattributes.MaxObjects=100 jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes jcs.default.elementattributes.IsEternal=false jcs.default.elementattributes.MaxLifeSeconds=15 Here is a snippet of code that is using Hibernate with caching: public List getAllActiveContainerTypes() { final String queryString = "from ContainerType containerType where containerType.status = 'ACTIVE'"; return getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(queryString); query.setCacheable(true); return query.list(); } }); } Here is where the QueryKey class is breaking: public boolean equals(Object other) { QueryKey that = (QueryKey) other; ... This object passed in is a CacheElement. Where is is cast to a QueryKey, the exception is thrown. I have attached the code for the entire class, but I don't think it will be useful. Thanks for the help. Ryan Aaron Smuts wrote: > > Can you send me a stack trace also. > > > -----Original Message----- > > From: Ryan Breidenbach [mailto:[EMAIL PROTECTED] > > Sent: Thursday, November 13, 2003 11:51 AM > > To: [EMAIL PROTECTED] > > Subject: CacheElement hashCode problem > > > > I am using JCS with Hibernate for caching, and I came across a > problem. > > When JCS encounters an object whose MaxLifeSeconds has been exceeded, > I > > am getting a ClassCastException. This is actually being thrown by the > > net.sf.hibernate.cache.QueryKey, but I think the root of the problem > is > > the hashCode method of the CacheElement class: > > > > public int hashCode() > > { > > return key.hashCode(); > > } > > > > Why does it do this? The problem happens when there is a QueryKey > object > > *and* and CacheElement object that wraps a QueryKey object both in the > > cache (Hashtable). This doesn't seem right. Any thoughts? > > > > Ryan > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: > [EMAIL PROTECTED] > > For additional commands, e-mail: > [EMAIL PROTECTED] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED]
QueryKey.java
Description: application/unknown-content-type-java_auto_file
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]