有关Springboot里redis的注解@Cacheable问题

Fools_ 2019-06-11 05:51:04
在使用@Cacheable时会报这个错误

java.lang.ClassCastException: com.slz.demo.pojo.Strategy cannot be cast to com.slz.demo.pojo.Strategy

代码中时这样的

@Cacheable(cacheNames = "strategy",key = "#id")
public Strategy findById(String id) {
return strategiesDao.findById(id).orElse(null);
}


redis的参数配置时这样的
@Configuration
@EnableCaching
@Slf4j
public class RedisCacheConfig extends CachingConfigurerSupport {


@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory){
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofHours(1)); // 设置缓存有效期一小时
return RedisCacheManager
.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
.cacheDefaults(redisCacheConfiguration).build();
}

@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory){
RedisTemplate<String, String> redisTemplate=new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(factory);


RedisSerializer<String> redisSerializer=new StringRedisSerializer();
redisTemplate.setKeySerializer(redisSerializer);
redisTemplate.setHashKeySerializer(redisSerializer);
return redisTemplate;
}


@Override
public CacheErrorHandler errorHandler(){
CacheErrorHandler cacheErrorHandler=new CacheErrorHandler() {

@Override
public void handleCachePutError(RuntimeException e, Cache arg1, Object arg2, Object arg3) {
// TODO Auto-generated method stub
RedisErrorExceptionLog(e,arg2,arg1);
}

@Override
public void handleCacheGetError(RuntimeException e, Cache arg1,Object arg2) {
// TODO Auto-generated method stub
RedisErrorExceptionLog(e,arg2,arg1);
}

@Override
public void handleCacheEvictError(RuntimeException e, Cache arg1,Object arg2) {
// TODO Auto-generated method stub
RedisErrorExceptionLog(e,arg2,arg1);
}

@Override
public void handleCacheClearError(RuntimeException e, Cache arg1) {
// TODO Auto-generated method stub
RedisErrorExceptionLog(e,null,arg1);
}
};
return cacheErrorHandler;
}
protected void RedisErrorExceptionLog(Exception e,Object key,Cache cache){
log.error("redis异常: cache=[{}],key=[{}],exception={}",cache.getName(),key,e.getMessage());
}
}


求解答
...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fools_ 2019-06-19
  • 打赏
  • 举报
回复
引用 1 楼 DAVE-BLACK 的回复:
你类引错了。。转型之后的类和你的实际类不是一个。你把自动引入的删掉手动引

可以具体点吗?
DAVE-BLACK 2019-06-11
  • 打赏
  • 举报
回复
你类引错了。。转型之后的类和你的实际类不是一个。你把自动引入的删掉手动引

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧