양방향 관계에서 서로 @ToString을 정의해서 사용하다 보면 결국 무한으로 각각 객체의 toString을 호출하게 되면서 StackOverflowError가 발생하게 된다.
즉, Lombok의 @ToString, @Data나 IDE가 제공하는 toString() 메서드 자동 생성 기능이 편리하다고 무분별하게 사용하게 되면 이러한 상황이 발생할 수 있다.
해결할 수 있는 방법은 크게 3가지가 있다.
가장 단순한 방법은 Lombok이나 IDE가 제공하는 toString() 메서드를 그대로 사용하지 않고 toString() 메서드를 직접 구현하여 연관관계 속성을 출력하지 않는 방법이다.
양방향 관계의 한 클래스 혹은 두 클래스의 toString()에서 연관관계 속성 출력 부분을 제거해주면 된다.
두번째 방법으로는 Lombok에서 지원하는 @ToString(exclude = "필드명") 옵션을 추가하면 된다.
세번째 방법으로는 두번째 방법과 비슷한 것으로 해당 변수 위에 @ToString.exclude를 이용하여 toString이 실행되지 못하게 한다.