java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot缓存@Cacheable出错

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() 的主要区别在于返回的列表类型和可变性:

‌使用场景‌:

到此这篇关于SpringBoot中缓存@Cacheable出错的问题解决的文章就介绍到这了,更多相关SpringBoot缓存@Cacheable出错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文