bug 1:
@Override
@Cacheable(cacheManager = Constants.REDIS_LOCAL, keyGenerator = DigestKeyGenerator.class)
public Map<Integer, Map<Integer, List<HouseRoomImageNewEntity>>> getHouseRoomPics(Integer cityId, List<Integer> houseIds, List<Integer> rooms) {
QHouseRoomImageNewEntity qHouseRoomImageNewEntity = QHouseRoomImageNewEntity.houseRoomImageNewEntity;
List<Predicate> where = new ArrayList<>();
where.add(qHouseRoomImageNewEntity.cityId.eq(cityId));
where.add(qHouseRoomImageNewEntity.houseId.in(houseIds));
if (CollectionUtils.isNotEmpty(rooms)) {
where.add(qHouseRoomImageNewEntity.totalRooms.in(rooms));
}
List<HouseRoomImageNewEntity> all = jpaQueryFactory.selectFrom(qHouseRoomImageNewEntity)
.where(where.toArray(new Predicate[where.size()])).fetch();
if (CollectionUtils.isNotEmpty(all)) {
Map<Integer, Map<Integer, List<HouseRoomImageNewEntity>>> map = all.parallelStream().collect(Collectors.groupingBy(e -> e.getHouseId(), Collectors.groupingBy(f -> f.getTotalRooms()));
return map;
}
return new HashMap<>();
}
返回值类型是map,Map中的key类型都是integer,
但是缓存中默认的key是string类型的,所以造成的现象就是第一次是正确的,之后刷新的数据是错误的
修改:将map中的integer类型换成了string类型
bug 2:<