https://velog.io/@sonaky47/JPA-delete%EA%B0%80-%EC%95%88%EB%90%9C%EB%8B%A4
if (body.getIsModelIdDirty()) {
Model model = modelRepository.findOneById(body.getModelId())
.orElseThrow(() -> new ApiException(ExceptionEnum.MODEL_NOT_FOUND));
if (article.getArticleModels().size() > 0) {
articleModelRepository.deleteAll(article.getArticleModels());
}
ArticleModel newArticleModel = articleModelMapper.toEntity(model, article);
articleModelRepository.save(newArticleModel);
}
@OneToMany(mappedBy = "article", fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
private List<ArticleModel> articleModels = new ArrayList<>();
cascade= CascadType.ALL, orphanRemoval=true 가 걸려있지 않은 상태에서 delete메소드를 호출해도 작동하지 않았다.
위에 있는 블로그를 참고하여 articleModel을 초기화해주는 코드를 추가하였고,
body에서 새로 태그하고 싶은 차량PK를 추가하니 잘 작동되었따.
if (body.getIsModelIdDirty()) {
Model model = modelRepository.findOneById(body.getModelId())
.orElseThrow(() -> new ApiException(ExceptionEnum.MODEL_NOT_FOUND));
if (article.getArticleModels().size() > 0) {
articleModelRepository.deleteAll(article.getArticleModels());
article.getArticleModels().clear();
}
ArticleModel newArticleModel = articleModelMapper.toEntity(model, article);
articleModelRepository.save(newArticleModel);
}
아마 영속성과 관련된 문제 아니었나 싶다.