mybatis-plus icon indicating copy to clipboard operation
mybatis-plus copied to clipboard

IPage与springboot中@Cacheable冲突

Open advancer777 opened this issue 3 years ago • 4 comments
trafficstars

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

3.4.2

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

当前使用的是通过@Cacheable来进行Redis的存取。使用Ipage分页后,从Redis中取值后,是首先通过空构造器构造一个对象,然后逐个字段set,但是Ipage的实现类Page中的records属性空构造出来后默认为Collections.emptyList(),所以在set时对空集合add会报错。

个人修改是将records默认初始化为 new ArraryList();

(新版源码依旧是records=Collections.emptyList();

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

在一个接口上使用IPage封装的同时使用@Cacheable注解

报错信息

UnSupportedOperationException

advancer777 avatar Dec 21 '21 02:12 advancer777

为什么要设置字段,而不是直接设置list结果为records?

showlist avatar Dec 31 '21 07:12 showlist

为什么要设置字段,而不是直接设置list结果为records?

showlist avatar Dec 31 '21 07:12 showlist

要设置字段,而不是直接设置列表为记录?

使用@Cacheable时,redis将数据取回封装对象的时候就是逐个封装。就像是解析json为实体类一样

advancer777 avatar Jan 13 '22 05:01 advancer777

建议你自己创建个page 实现类 包装一下、另外还有这需求吗?将 ipage 缓存?下次来的时候直接走缓存?

heihei180 avatar Jun 13 '22 07:06 heihei180

up

qmdx avatar Dec 23 '22 07:12 qmdx