작성
·
569
·
수정됨
0
안녕하세요~
findParent.getChildList().remove(0);
강의에서 설명주신 위 코드에 대해 추가 질문이 있습니다.
컬렉션에서 첫번째 child 엔터티를 제거한 경우에 고아 객체가 되어 delete 쿼리가 실행되는 것으로 이해를 했는데요.
@OneToMany(mappedBy = "XXX", orphanRemoval = true)
orphanRemoval만으로는 delete 쿼리가 실행되지 않고, cascade = CascadeType.PERSIST
가 함께 실행된 경우에만 delete 쿼리가 실행되더라구요.
@OneToMany(mappedBy = "XXX", orphanRemoval = true, cascade = CascadeType.PERSIST)
혹시 orphanRemoval 설정만으로는 영속성 전이가 일어나지 않고 cascade = CascadeType.PERSIST
을 추가해야지만, findParent.getChildList().remove(0);
호출시에 고아객체가 된 child 엔티티의 생명주기까지 영향을 미칠 수 있게 되어 delete 쿼리가 실행이 되는 것인지 여쭤보고 싶습니다.
(즉, 'orphanRemoval'과 '영속성 전이' 설정을 독립적으로 봐야하는 것인지 궁금합니다.)
감사합니다.
답변 1
1
안녕하세요. raccoon님
다음 질문에 개발하는 개발하는쿼카님의 답변을 참고해주세요^^
추가로 다음 내용도 참고해주세요.
https://www.inflearn.com/questions/137740/orphanremoval%EA%B3%BC-cascade%EC%9D%98-%EA%B4%80%EA%B3%84
감사합니다.
답변 갑사합니다! 🙏