com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.maemae.escaperoom.dto.ThemeListDTO and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.maemae.escaperoom.controller.ThemeController$Result["data"]->org.springframework.data.domain.PageImpl["content"]->java.util.Collections$UnmodifiableRandomAccessList[0])

위와 같은 에러가 발생하였다.
구글링을 해보니
스프링 부트에서는 기본적으로 Jackson 라이브러리가 탑재되어있는데 - Serialize 하는 과정에서 접근 제한자가 public이거나 Getter/Setter를 이용하기 때문에, 인스턴스 필드가 private으로 선언되어있으면 JSON 변환 과정에서 문제가 발생하는 것이였다.
여기까지 읽고 혹시나 해서 DTO 파일을 다시 봤는데

적어놓은 줄 알았던 Lombok 어노테이션이 빠져있었다.
@Getter
public class ThemeListDTO {
@Getter 를 추가하여 문제 해결 !
나는 비교적 간단하게 해결했지만, 혹시 이 방법으로 해결되지 않는다면
https://steady-hello.tistory.com/90
위 글을 참고하여 @JsonProperty, @JsonAutoDetect, setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) 등으로 해결해보자 .. !
'escape-room' 카테고리의 다른 글
| [QueryDSL] 소수점 반올림하기, ROUND 함수 사용하기 (ex.소수점 n번째 자리까지 반올림하기) (1) | 2023.05.23 |
|---|---|
| [QueryDSL] JOIN 2번 사용하여 테마 전체 리스트 조회하기 (+복잡한 경우의 페이징 처리 방법, 조회 및 정렬에서의 NULL 처리 방법) (0) | 2023.05.23 |
| [Ubuntu] Nginx, Let's Encrypt를 사용하여 HTTPS 설정하기 (+에러 해결) (0) | 2023.05.19 |
| [AWS] DNS 설정하기 : 도메인과 EC2 탄력적 IP 연결 (with. 가비아) (0) | 2023.05.19 |
| [QueryDSL/JPA] 동적 쿼리 작성하기 (Join 사용 X) (0) | 2023.05.19 |