🟦 기본 환경: IDE: IntelliJ, Language: Java
SpringBoot의 MainApplication에서 양방향 참조 관계가 있는 Entity의 데이터를 호출할 경우,
🚨 다음과 같은 Error 발생
org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError)
발생 원인
Entity 객체간 양방향 참조관계가 있을 경우, 엔티티를 반환하여 JSON으로 변경할 경우, serialize(직렬화) 과정을 거치는데, 이때 객체간 상호 참조를 통해 무한 재귀 발생
해결 방법
1. 양방향 참조 관계의 필드에 @JsonIgnore 선언
🚨 해당 필드값이 null값으로 세팅되어 JSON으로 출력되지 않음
2. 부모 클래스측에 @JsonManagedReference를, 자식측에 @JsonBackReference를 Annotation에 추가
@JsonManagedReference
: 참조가 되는 앞부분을 의미, 정상적으로 직렬화를 수행
@JsonBackReference
: 참조가 되는 뒷부분을 의미, 직렬화를 수행하지 않음
3. Entity 대신 DTO를 만들어 return
참고 자료
'Java > JPA with Error' 카테고리의 다른 글
[해결 방법] org.hibernate.MappingException (0) | 2023.08.05 |
---|---|
[해결 방법] java.sql.SQLIntegrityConstraintViolationException (0) | 2023.06.25 |
[해결 방법] java.lang.StackOverflowError: null (0) | 2023.06.18 |
[해결 방법] org.hibernate.hql.internal.ast.QuerySyntaxException (0) | 2023.05.29 |
[해결 방법] org.hibernate.DuplicateMappingException (0) | 2023.05.23 |