当前使用版本(必填,否则不予处理)

3.4.2(升级到最新的 3.5.2 依然有这个问题)

该问题是如何引起的?(确定最新版也有问题再提!!!)

类型转换异常,把 String 转换为 List。 执行查询方法的时候,会调用 Object result = tcm.getObject(cache, key); MyBatis-Plus MyBatis-Plus 使用 Redis 作为二级缓存,从 Redis 读取到数据后转换时抛异常。 然后会调用自己定义的 Redis 方法 MyBatis-Plus MyBatis-Plus 使用 Redis 作为二级缓存,从 Redis 读取到数据后转换时抛异常。 Redis 存的是字符串,然后 MyBatisPlus 强转为 List。 这个时候,就出现类型转换异常了。 MyBatis-Plus MyBatis-Plus 使用 Redis 作为二级缓存,从 Redis 读取到数据后转换时抛异常。

重现步骤(如果有就写完整)

1、Mapper 接口继承 BaseMapper 接口,然后在接口上添加注解 @CacheNamespace(implementation = MyBatisRedisCache.class, eviction = MyBatisRedisCache.class),(该接口没有编写 xml 实现自己的方法)。 2、第一次查询的时候,Redis 没有相应的数据,把查询的数据缓存到 Redis,此时返回数据正常。第二次查询的时候,走 Redis 获取数据,由于存入的时候是字符串,获取到的也是字符串,然后这个时候 MyBatis-Plus 把 String 转换为 List,异常就出现了。

报错信息

Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.List
    at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:160)
    at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
    at com.sun.proxy.$Proxy251.query(Unknown Source)
    at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:132)
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
    at com.sun.proxy.$Proxy251.query(Unknown Source)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
    ... 57 more

目前网上没有搜到相关的解决方案,感谢回复。