so2zzy 프로젝트를 하면서 겪었던 순환참조문제이다. 해당 문제를 Discussion에 업로드하여 다른 팀원들이 빠르게 문제를 해결할 수 있었다. 역시 기록과 공유의 중요성..! 🌱
🔗https://github.com/so2zy/so2zy_BE/discussions/23#discussion-5878755
문제
Infinite recursion (StackOverflowError)
(through reference chain: com.aroom.domain.room.model.Room["accommodation"]
->com.aroom.domain.accommodation.model.Accommodation["roomList"]
->org.hibernate.collection.spi.PersistentBag[0]
->com.aroom.domain.room.model.Room["accommodation"]
->com.aroom.domain.accommodation.model.Accommodation["roomList"]- ~~~
현재 양방향 연관관계에 놓여진 Accommodation과 Room에서 무한순환참조가 발생했다.
해결방안
- @OneToMany @ManyToOne로 인해 순환참조 원인
- @JsonManagedReference & @JsonBackReference 추가
@JsonManagedReference @OneToMany(mappedBy = "accommodation", fetch = FetchType.LAZY) private List<Room> roomList = new ArrayList<>();
- @JsonManagedReference : 부모 Entity → 자식 Entity
- 정상적으로 직렬화를 수행
@JsonBackReference @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "accommodation_id") private Accommodation accommodation;
- @JsonBackReference : 자식Entity → 부모 Entity
- 직렬화 수행 x
⇒ 무한 순환 참조 해결
- 직렬화 수행 x
- @JsonManagedReference : 부모 Entity → 자식 Entity
🔗 참고 url
https://bellog.tistory.com/149
Uploaded by N2T