진짜 구성을 완벽하게 했다고 생각했는데 갑자기 사라지지 않는 에러가 생겼다.
Cannot set error status - response is already committed 이 에러다.
아직도 공부할 것들이 한참 많은 것 같다.
본론부터 말하자면 저 에러는 Entity에서 나오는 문제이다.
Spring Data JPA를 사용했을 때 등장한 문제이다.
순환 참조라는 원인인데 예를 들어 Review 엔티티가 있고 Photo 엔티티가 있다고 치자.
Review의 PK를 Photo가 FK로 가지고 있는 상태이다.
무엇이 문제인지 알겠는가?
Response를 하게 되면 JSON 형태로 매핑하기 위해 모든 엔티티를 불러오는데 이 때 Photo는 Review를 참조하고 Review는 Photo를 참조한다.
그렇게 계속 돌고 돌며 참조를 해 결국 Overflow를 발생시킨 것이었다.
해결책
해결책은 @JsonManagedReference와 @JsonBackReference를 사용하는 것이다.
1:N의 관계에서 1에 @JsonManagedReference를, N에 @JsonBackReference를 붙여준다.
'Spring > Trouble Shooting' 카테고리의 다른 글
SSLHandshakeException: PKIX path building failed 오류 해결 (1) | 2025.03.20 |
---|---|
[NoSuchBeanDefinitionException] expected at least 1 bean which qualifies as autowire candidate (0) | 2022.07.06 |
[SQL] ; expected "identifier" 오류 (0) | 2022.07.06 |