錯誤資訊:
原代碼:
if (null != dtoErrorDataSqlResult) {
if (list.size() > 40) {
dtoErrorDataSqlResult.setDatas(list.subList(20, 40));
} else {
dtoErrorDataSqlResult.setDatas(list);
}
addValue("cacheDFS", cacheID, dtoErrorDataSqlResult);// 緩存查詢結果
}
修改後的代碼:
if (null != dtoErrorDataSqlResult) {
if (list.size() > 40) {
List<Map<String, String>> tmp = new ArrayList<>(list.subList(20, 40));
dtoErrorDataSqlResult.setDatas(tmp);
} else {
dtoErrorDataSqlResult.setDatas(list);
}
addValue("cacheDFS", cacheID, dtoErrorDataSqlResult);// 緩存查詢結果
}
看源碼注釋得知錯誤原因是:List.subList方法傳回的隻是一個視圖,而ehcache寫入磁盤需要的是實體,是以出現此問題!