当前位置: 首页 > article >正文

SpringBoot中缓存@Cacheable出错

SpringBoot中使用@Cacheable:

错误代码:

@Cacheable(value = "FrontAdvertiseVOList", keyGenerator = "cacheKey")
@Override
public List<FrontAdvertiseVO> getFrontAdvertiseVOList(Integer count) {return this.list(Wrappers.<Advertise>lambdaQuery().select(Advertise::getPic, Advertise::getUrl).eq(Advertise::getState, 1).orderByDesc(Advertise::getPriority).last("limit " + count)).stream().map(advertise -> new FrontAdvertiseVO(advertise.getPic(), advertise.getUrl())).toList();   // ----------- ①
}

运行程序,出错:

org.springframework.data.redis.serializer.SerializationException: Could not read JSON:Unexpected token (START_OBJECT), expected VALUE_STRING: need String, Number of Boolean value that contains type id (for subtype of java.lang.Object)at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 2] 

解决方案

只需要将编号①处的代码修改为:

.collect(Collectors.toList());

原理

  • collect(Collectors.toList())‌返回的数据:
    在这里插入图片描述
  • ‌toList()‌返回的数据:
    在这里插入图片描述

collect(Collectors.toList()) 和 toList() 的主要区别在于返回的列表类型和可变性:

  • collect(Collectors.toList())‌:返回的是一个普通的 ArrayList ,因此可以进行添加、删除和修改操作‌
  • ‌toList()‌:返回的是通过对原始数组创建一个不可修改的列表。一旦创建,就不能对其进行添加、删除或修改操作‌

‌使用场景‌:

  • ‌toList()‌:适用于不需要对列表进行修改的场景,如从数据库查询数据等,因为它返回的是不可变列表,可以防止数据被意外修改‌
  • ‌collect(Collectors.toList())‌:适用于需要对列表进行修改的场景,因为它返回的是普通的ArrayList,可以进行各种操作‌
http://www.lryc.cn/news/2399450.html

相关文章:

  • iOS UIActivityViewController 组头处理
  • 分布式电源接入配电网的自适应电流保护系统设计与实现
  • 鸿蒙版Taro 搭建开发环境
  • 论对生产力决定生产关系的批判:突破决定论的桎梏
  • ESOP交易系统搭建全景指南:从合规基石到价值跃迁
  • GICv3电源管理
  • 《TCP/IP 详解 卷1:协议》第3章:链路层
  • centos 9/ubuntu 一次性的定时关机
  • Elasticsearch从安装到实战、kibana安装以及自定义IK分词器/集成整合SpringBoot详细的教程(二)
  • Java自动类型转换的妙用
  • 数据库管理-第333期 Oracle 23ai:RAC打补丁完全不用停机(20250604)
  • 【DAY39】图像数据与显存
  • AI代码库问答引擎Folda-Scan
  • Kafka深度技术解析:架构、原理与最佳实践
  • 基于cnn的通用图像分类项目
  • Kotlin-协程
  • pycharm 左右箭头 最近编辑
  • Linux环境管道通信介绍
  • DIC技术助力金属管材全场应变测量:高效解决方案
  • python基础day04
  • 嵌入式学习--江协stm32day1
  • 湖北理元理律师事务所:债务化解中的心理重建与法律护航
  • constexpr 是 C++11 引入的关键字
  • 【更新中】(文档+代码)基于推荐算法和Springboot+Vue的购物商城
  • 六种高阶微分方程的特解(原创:daode3056)
  • 【C++11(上)】—— 我与C++的不解之缘(三十)
  • 【多线程初阶】wait() notify()
  • 安全-JAVA开发-第二天
  • Python基础:文件简单操作
  • 深度学习项目之RT-DETR训练自己数据集