오류해결... 1시간의 삽질...
간단한 게시판의 댓글 기능을 구현하는 도중 스택오버플로우가 발생했다...
수정전
Board
@Entity
public class Board {
...
@OneToMany(mappedBy = "board")
private List<Comment> comments = new ArrayList<>();
}
Comment
@Entity
public class Comment {
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "board_Id")
private Board board;
}
이런식으로 엔티티를 설계한 후에 DTO로 통해 값을 json 형식으로 전달받아서 db에 저장을 하려고 했지만.. 처음 만나보는.. 딱하고 스택오버플로우가 발생한 것이다...
해결하기 위해서 여러 가지를 시도했지만.. 여러 가지 시도 끝에 엔티티를 봐보니 내가 양뱡향 매핑을 해놔 서로 참조하는 참조 순환이 발생하게 된 것이다. 그래서 한쪽에서는 json 데이터 값을 사용하지 못하도록 설정해야 했던 것 같다.
그래서 양방향 매핑의 주인이 아닌 Board 엔티티에 @JsonIgnore을 통해서 직렬화 및 역질렬화가 되지 않도록 해결했다.
수정 후
@Entity
public class Board {
...
@OneToMany(mappedBy = "board")
@JsonIgnore
private List<Comment> comments = new ArrayList<>();
}
올바르게 값을 가져왔다..!