SpringBoot中緩存@Cacheable出錯(cuò)的問(wèn)題解決
錯(cuò)誤代碼:
@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(); // ----------- ①
}
運(yùn)行程序,出錯(cuò):
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]
解決方案
只需要將編號(hào)①處的代碼修改為:
.collect(Collectors.toList());
原理
collect(Collectors.toList())返回的數(shù)據(jù):

toList()返回的數(shù)據(jù):

collect(Collectors.toList()) 和 toList() 的主要區(qū)別在于返回的列表類(lèi)型和可變性:
- collect(Collectors.toList()):返回的是一個(gè)普通的 ArrayList ,因此可以進(jìn)行添加、刪除和修改操作
- toList():返回的是通過(guò)對(duì)原始數(shù)組創(chuàng)建一個(gè)不可修改的列表。一旦創(chuàng)建,就不能對(duì)其進(jìn)行添加、刪除或修改操作
使用場(chǎng)景:
- toList():適用于不需要對(duì)列表進(jìn)行修改的場(chǎng)景,如從數(shù)據(jù)庫(kù)查詢數(shù)據(jù)等,因?yàn)樗祷氐氖遣豢勺兞斜?,可以防止?shù)據(jù)被意外修改
- collect(Collectors.toList()):適用于需要對(duì)列表進(jìn)行修改的場(chǎng)景,因?yàn)樗祷氐氖瞧胀ǖ腁rrayList,可以進(jìn)行各種操作
到此這篇關(guān)于SpringBoot中緩存@Cacheable出錯(cuò)的問(wèn)題解決的文章就介紹到這了,更多相關(guān)SpringBoot緩存@Cacheable出錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一個(gè)MIDP俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)
一個(gè)MIDP俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)...2006-12-12
Spring?Boot攔截器和監(jiān)聽(tīng)器實(shí)現(xiàn)對(duì)請(qǐng)求和響應(yīng)處理實(shí)戰(zhàn)
這篇文章主要介紹了Spring?Boot攔截器和監(jiān)聽(tīng)器實(shí)現(xiàn)對(duì)請(qǐng)求和響應(yīng)處理實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
SpringSecurity根據(jù)自定義異常返回登錄錯(cuò)誤提示信息(賬戶鎖定)
本文介紹了在SpringSecurity中根據(jù)自定義異常返回登錄錯(cuò)誤提示信息的方法,特別是在賬戶鎖定時(shí),通過(guò)記錄輸錯(cuò)次數(shù)、重寫(xiě)校驗(yàn)方法并拋出自定義異常,感興趣的可以了解一下2025-01-01
java格式化數(shù)字操作 NumberFormat及DecimalFormat
這篇文章主要介紹了java格式化數(shù)字操作 NumberFormat及DecimalFormat,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
Java中使用OKHTTP3的詳細(xì)教程與實(shí)戰(zhàn)應(yīng)用案例
okhttp是當(dāng)下主流的網(wǎng)絡(luò)請(qǐng)求的開(kāi)源框架,效率很高,使用起來(lái)也非常方便,這篇文章主要介紹了Java中使用OKHTTP3的詳細(xì)教程與實(shí)戰(zhàn)應(yīng)用案例的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-01-01
使用Java生成和識(shí)別二維碼的簡(jiǎn)易教程
在當(dāng)今瞬息萬(wàn)變的商業(yè)和技術(shù)環(huán)境中,二維碼已成為快速、高效信息傳遞的代名詞,本文將為您介紹 Spire.Barcode for Java 這一強(qiáng)大工具,它能幫助您輕松應(yīng)對(duì)Java應(yīng)用程序中的二維碼生成與識(shí)別挑戰(zhàn),需要的朋友可以參考下2025-09-09
mybatis攔截器實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)權(quán)限隔離方式
通過(guò)Mybatis攔截器,在執(zhí)行SQL前添加條件實(shí)現(xiàn)數(shù)據(jù)權(quán)限隔離,特別是對(duì)于存在用戶ID區(qū)分的表,攔截器會(huì)自動(dòng)添加如user_id=#{userId}的條件,確保SQL在執(zhí)行時(shí)只能操作指定用戶的數(shù)據(jù),此方法主要應(yīng)用于Mybatis的四個(gè)階段2024-11-11
Springboot jpa @Column命名大小寫(xiě)問(wèn)題及解決
這篇文章主要介紹了Springboot jpa @Column命名大小寫(xiě)問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10

