본문 바로가기
내가 배운 것들/문제 해결

[Redis] Redis에서 불러온 값이 for each문의 조건이 될 수 없는 문제

by Zabee52 2022. 1. 6.

ObjectMapper

정확하게 이 문제인지는 알 수 없다. 처음 발생한 문제였기 때문이다.

 

List<BoardMemeBestResponseDto> boardMemeBestResponseDtoList = redisService.getBestMemeImgList(BEST_MEME_JJAL_KEY);

List<BoardMemeBestResponseDto> resultList = new ArrayList<>();

for(BoardMemeBestResponseDto boardMemeBestResponseDto : mappedList) {
    Board board = boardRepository.findById(boardMemeBestResponseDto.getBoardId()).orElse(null);
    Long boardId = boardMemeBestResponseDto.getBoardId();
    Boolean boardLike = boardLikeRepository.existsByBoard_BoardIdAndUser(boardId, user);
    resultList.add(new BoardMemeBestResponseDto(boardMemeBestResponseDto, (long)board.getLikes().size(), boardLike));
}
java.util.LinkedHashMap cannot be cast to object

 

위 코드가 다음의 에러문구와 함께 실행되지 않는 문제였다.

찾아보니 스프링의 버그라고 한다. 그래서 직접 매뉴얼하게 매핑을 진행해줬다.

 

ObjectMapper mapper = new ObjectMapper();
List<BoardMemeBestResponseDto> mappedList = mapper.convertValue(boardMemeBestResponseDtoList, new TypeReference<List<BoardMemeBestResponseDto>>(){});

댓글