首页 > 解决方案 > java.lang.ClassCastException:com.sun.proxy.$Proxy219 无法转换为 org.springframework.data.redis.connection.StringRedisConnection

问题描述

这是redis,管道的功能。它以前使用过,但今天我测试此功能时。它不起作用。

public List<Object> hgetpipeline(List<String> keys) {
        List<Object> results = redisTemplate.executePipelined(
                new RedisCallback<Object>() {
                    @Override
                    public Object doInRedis(RedisConnection connection) throws DataAccessException {
                        StringRedisConnection stringRedisConn = (StringRedisConnection)connection;
                        for(int i=0; i< keys.size(); i++) {
                            stringRedisConn.hGetAll(keys.get(i)+"");
                        }
                        return null;
                    }
                });
      return results;
    }

这一行发生了一些错误

StringRedisConnection stringRedisConn = (StringRedisConnection)connection;

有错误信息

java.lang.ClassCastException: 
com.sun.proxy.$Proxy219 cannot be cast to org.springframework.data.redis.connection.StringRedisConnection

主类中的annonation

@SpringBootApplication
@EnableAsync
@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
@EnableScheduling
@RestController
public class ApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiApplication.class, args);
    }

    @RequestMapping("/")
    public String index() {
        return "Server started!";
    }

}

标签: javaspringproxyrediscglib

解决方案


您必须使用 stringRedisTemplate。例如:

@Resource
private StringRedisTemplate stringRedisTemplate;

public List<Object> hgetpipeline(List<String> keys) {
    List<Object> results = stringRedisTemplate.executePipelined(
            new RedisCallback<Object>() {
                @Override
                public Object doInRedis(RedisConnection connection) throws DataAccessException {
                    StringRedisConnection stringRedisConn = (StringRedisConnection)connection;
                    for(String key:keys) 
                    {
                        stringRedisConn.get(key);
                    }
                    return null;
                }
            });
  return results;
}

推荐阅读