이슈 원인
Member 엔티티와 Company 엔티티간의 연관관계가 있는데
Company 엔티티에서 JSON으로 반환하는 과정에서 생긴에러로
Company에더 LAZY JOIN을 해도 JSON으로 변환하는 중 직렬화(serialize) 과정을 거치는데
Member에 Company가 있어서 Company를 참조하고, Company에 있는 Member 를 참조하면서 무한 재귀가 발생했다.
해결방법
@JsonIgnore
참조하는 엔티티에서 (재귀를 일으키는) 필드에 @JsonIgnore 를 추가한다.
DTO 생성
엔티티로 반환하지 않고 리턴용 DTO를 따로 만들어서 사용한다.
해결
나는 두번째 해결 방법인 DTO로 반환해도 해당 문제가 생겼는데
DTO 에서 엔티티 정보 전체를 가져오는게 있다보니 생기는 문제였다.
DTO에서 사용하는 엔티티에 @JsonIgnore 을 추가해주었다.
public class MemberDto {
@Schema(description = "사용자 이름")
private String name;
...
@JsonIgnore
@Schema(description = "회사 정보")
private CompanyEntity companyEntity;
}
반응형
'공부 > Spring' 카테고리의 다른 글
[Spring] Spring HATEOAS란 (0) | 2023.08.10 |
---|---|
[JPA] List to Page - List를 Page로 변환해서 사용하기 (0) | 2023.08.07 |
실전! 스프링 데이터 JPA 내용 정리 - 섹션 4(1) (0) | 2023.08.02 |
[JPA] COALESCE - @Query에서 sum()사용시 Null 을 0으로 (0) | 2023.05.19 |
[Spring Error] nested exception is java.lang.IllegalArgumentException: Could not locate appropriate constructor on class (0) | 2023.04.21 |