728x90
[OnetoMany ManytoOne문제]
1. 처음에 Onetomany manytoOne 를 각각 memo와 Comments에 각각 넣었는데 안되서 comments의 manytoone으로 단방향 참조를 해서 해결했음
2. 그래도 one to many manytoone을 해결해보자 해서 계속 문제를 해결해보려고했지만 순환참조 문제가 발생
[순환참조문제]
해결방법1
[Memo Entity]
@JsonManagedReference
@OneToMany(fetch =FetchType.LAZY,mappedBy = "memo",cascade = CascadeType.ALL)
// @JoinColumn(name = "Comment_id", nullable = false)
private List<Comments> comments = new ArrayList<>();
[Comments Entity]
@JsonBackReference
@ManyToOne(fetch =FetchType.LAZY)
@JoinColumn(name = "memo_id", nullable = false)
private Memo memo;
순환참조를 끊기 위해 주체를 Memo가 아니라 Comments로 바꿈
@JsonBackReference와 @JsonManagedReference를 쓰면 주체가 바뀜
해결방법2
Entity자체를 보내지않고 Dto에 필요한 변수만 넣어서 보내면 순환참조가 끊김
CommentsresponseDto에 @Getter를 꼭달아야된다 아니면, 406에러가남
Memo entity에
public void setComments(Comments comments)
{
this.comments.add(comments);
}
setComments를 comments생성시점에 list에 넣어줌
Memo memo = memoRepository.findById(memoId).orElseThrow(()->new IllegalArgumentException("메모 ID가 존재하지 않습니다."));
Comments comments = new Comments(commentRequestDto,memo);
memo.setComments(comments);
*규칙
1. Onetomany에는joincolumn이 들어가면 안됨
2. mappedby는 onetomany만 들어감
728x90
'스파르타코딩클럽(내일배움캠프)' 카테고리의 다른 글
소수 찾기 (0) | 2023.01.11 |
---|---|
스파르타코딩클럽 내일배움캠프 11주차 3일 (0) | 2023.01.11 |
스파르타코딩클럽 내일배움캠프 11주차 1일 (0) | 2023.01.09 |
스파르타코딩클럽 내일배움캠프 10주차 후기 (0) | 2023.01.08 |
스파르타코딩클럽 내일배움캠프 10주차 5일 (0) | 2023.01.07 |