개발일지(일간)
23년 02월 23일
move2
2023. 2. 24. 01:10
팀프로젝트 중간발표 준비중 유저 평점 로직이 너무 비효율적으로 작동하는것같아 리팩토링 해 주었다.
그런데 테스트를 해보니 Cannot call sendError() after the response has been committed라는 에러메세지가 뜨면서 계속 순환참조가 되었다.
처음보는 에러다 보니 순환참조인지도 모르고 당황했었는데, 쿼리가 날아가는 것을 보니 계속 똑같은 요청을 반복하는것이 보였다.
원인은 새로 써준 쿼리에 있었는데,
review와 usergrade는 @OneToOne관계라 서로를 가지고 있는데, review를 가지고 있는 userGrade를 호출하고, userGrade에서 다시 review를 호출하고.. 이런식으로 순환참조를 했던 것 같다.
필요한 값이 userGrade의 grade이었기때문에 review.userGrade.grade를 가져오는것으로 해결했다.
앞으로는 쿼리를 써 줄때 연관관계에 주의해야할 것 같다.