이래저래 찾아봐도 해결할 수가 없어서, 아래와 같은 질문을 남겼다.
총 4개의 엔티티가 각각 다대일 매핑으로 이루어져 있는데요.
각 엔티티의 정보는 다음과 같습니다.
문제는 엔티티 B까지만 cascade=ALL, orphanRemoval=true가 적용된다는 것입니다..ㅠㅠ
차이가 있다면, 엔티티 A는 유저의 정보라서, 항상 저장이 되어있는 것을 꺼내어와서 사용한다는 것이고(저장을 회원가입 로직에서만 수행합니다.),엔티티 B, C, D는 글 작성 시 모두 새로 생성하여 사용한다는 점입니다.
저는 엔티티B 삭제 로직에서,엔티티A의 List에서 엔티티B를 remove 하면 B, C, D가 모두 삭제되는 것을 기대했는데, 전혀 삭제가 되지 않습니다 ㅠ
오히려 엔티티A의 List에서 엔티티B을 remove하고, 추가적으로 엔티티B의 리포지토리에서 엔티티 B를 삭제해야만 비로소 삭제가 완료됩니다.
기능 자체를 구현은 했지만, 이렇게 동작하는 원인을 알고싶어서, 여기저기 찾아보다가 답을 찾지 못해 이곳에 질문 글을 남기게 되었습니다 ㅠㅜ
감사하게도, 영한쌤이 직접 답변을 주셨다.