프로젝트를 하는 중 실행 후에 postman으로 돌려보는데
분명 실행은 잘 되는데 아래와 같은 에러가 나왔다.
에러를 자세히 보니 toString이 반복해서 일어나고 있어서 StackOverFlow가 난다는 에러였다.
그래서 내 프로젝트 내의 코드들을 살펴보니,
YataRequest Entity에는 아래와 같이 Yata를 가지고 있고
Yata Entity에는 아래와 같이 yataRequests를 list로 가지고 있는데
내가 Yata 테이블의 @ToString
을 호출하면 그 안에 있는 yataRquests를 불러오고
그러면 YataRequest 테이블에서는 ToString을 호출받았기 때문에 그 안에 있는 필드들을 출력해주는데
이 때, YataRequest 안에 Yata가 있기 때문에 또 yataRequests를 불러들이고
이게 반복되어서 StackOverFlowError가 발생하는 것이었다.
이 계속되어 ToString을 호출하는 것을 방지하기 위해서는
두 테이블 중 하나에 앞으로 호출되는 것을 방지하라고 toString(exclude = "")
와 같이 exclude 를 붙여주면 된다.
Yata 테이블의 yataRequests를 toString()할 때 제외하거나,
@ToString(exclude = "yataRequests") public clss Yata extends Auditable { }
YataRequest 테이블의 yata를 toString()할 때 제외하거나 !
@ToString(exclude = "yata") public clss YataRequest extends Auditable { }
나는 두번째 방법을 사용하였고, 아래와 같이 적용 후에
다시 postman으로 test 해보니 잘 되었다 ~~
해결 완 ~