java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.vuelogix.collygo.to.TODatapointTemplate
at com.vuelogix.collygo.service.DatapointTemplateService$$EnhancerBySpringCGLIB$$3af4fe56.findById(<generated>)
at com.vuelogix.collygo.service.DataPointService.addToHistory(DataPointService.java:157)
at com.vuelogix.collygo.service.DataPointService$$FastClassBySpringCGLIB$$201d1115.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.cache.interceptor.CacheInterceptor$1.invoke(CacheInterceptor.java:52)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:185)
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:60)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644)
at com.vuelogix.collygo.service.DataPointService$$EnhancerBySpringCGLIB$$8b1eaf10.addToHistory(<generated>)
at com.vuelogix.m2m.store.StorageProcessor.process(StorageProcessor.java:36)
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:97)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:113)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:105)
at org.apache.camel.processor.MulticastProcessor.doProcessParallel(MulticastProcessor.java:711)
at org.apache.camel.processor.MulticastProcessor.access$200(MulticastProcessor.java:82)
at org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:292)
at org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:277)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
这是我试图缓存的方法。
public TODatapointTemplate findById(int id) {
logger.debug("findById:: finding by Id :" + id
+ ".. status:: processing");
DatapointTemplate datapointTemplate = datapointTemplateRepository
.findOne(id);
logger.debug("findById:: found DatapointTemplate for id : " + id);
TODatapointTemplate toDatapointTemplate = null;
try {
if (Utility.nullCheck(datapointTemplate)) {
toDatapointTemplate = mapper.map(datapointTemplate,
TODatapointTemplate.class);
}
} catch (Exception e) {
logger.error("findById:: Exception : " + e.getMessage() + e);
}
logger.debug("findById:: finding by Id :" + id + ".. status:: done");
return toDatapointTemplate;
}
缓存配置
<cache:advice id="DatapointTemplateServiceCacheAdvice"
cache-manager="cacheManager">
<cache:caching cache="DatapointTemplateService">
<cache:cacheable method="findById" key="#id.toString()"/>
</cache:caching>
ehcache config
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" name="rootCache">
<cache
name="DatapointTemplateService"
maxEntriesLocalHeap="20000"
eternal="false"
timeToIdleSeconds="600"
timeToLiveSeconds="1200"
/>
</ehcache>
当我启用此缓存时,我正在获得类强制转换。我已经覆盖了哈希码和等于TODatapointTemplate的方法,但问题仍然存在