[JPA] Failed toString() invocation on an object of type 에러

현주·2023년 1월 15일
0

Trouble Shooting

목록 보기
23/32

🔥 문제

프로젝트를 하는 중 실행 후에 postman으로 돌려보는데

분명 실행은 잘 되는데 아래와 같은 에러가 나왔다.


💡 원인

에러를 자세히 보니 toString이 반복해서 일어나고 있어서 StackOverFlow가 난다는 에러였다.

그래서 내 프로젝트 내의 코드들을 살펴보니,

YataRequest Entity에는 아래와 같이 Yata를 가지고 있고

Yata Entity에는 아래와 같이 yataRequests를 list로 가지고 있는데

내가 Yata 테이블의 @ToString을 호출하면 그 안에 있는 yataRquests를 불러오고

그러면 YataRequest 테이블에서는 ToString을 호출받았기 때문에 그 안에 있는 필드들을 출력해주는데

이 때, YataRequest 안에 Yata가 있기 때문에 또 yataRequests를 불러들이고

이게 반복되어서 StackOverFlowError가 발생하는 것이었다.


☘️ 해결

이 계속되어 ToString을 호출하는 것을 방지하기 위해서는

두 테이블 중 하나에 앞으로 호출되는 것을 방지하라고 toString(exclude = "")와 같이 exclude 를 붙여주면 된다.

  1. Yata 테이블의 yataRequests를 toString()할 때 제외하거나,

    @ToString(exclude = "yataRequests")
    public clss Yata extends Auditable {
    }
  2. YataRequest 테이블의 yata를 toString()할 때 제외하거나 !

    @ToString(exclude = "yata")
    public clss YataRequest extends Auditable {
    }

나는 두번째 방법을 사용하였고, 아래와 같이 적용 후에

다시 postman으로 test 해보니 잘 되었다 ~~

해결 완 ~

0개의 댓글