JPA deleteAll trong mối quan hệ OneToMany
<div class="markdown-block">Em chào mọi người ạ. Em đang gặp một trường hợp muốn được giải thích rõ hơn với Hibernate/JPA và mong mọi người giải thích giúp em cơ chế hoạt động.Em có 2 entity là A và B:Một A có nhiều B.Một B chỉ thuộc về một A.Trong entity A em khai báo như sau:</div><div class="markdown-block">@OneToMany(</div><div class="markdown-block">mappedBy = "parent",</div><div class="markdown-block">fetch = FetchType.LAZY,</div><div class="markdown-block">cascade = CascadeType.ALL,</div><div class="markdown-block">orphanRemoval = true</div><div class="markdown-block">)</div><div class="markdown-block">private List<B> childrens = new ArrayList<>();</div><div class="markdown-block">Trong service em có đoạn code đại khái như sau:</div><div class="markdown-block">@Transactional</div><div class="markdown-block">public void deleteChildren(Long aId, List<Long> deleteIds) {</div><div class="markdown-block">A parent = parentRepository.findById(aId)</div><div class="markdown-block">.orElseThrow();</div><div class="markdown-block">List<B> existingChildren = childRepository.findByParentId(aId);</div><div class="markdown-block">// kiểm tra deleteIds có thuộc về parent hay không</div><div class="markdown-block">List<B> childrenToDelete = existingChildren.stream()</div><div class="markdown-block">.filter(child -> deleteIds.contains(child.getId()))</div><div class="markdown-block">.toList();</div><div class="markdown-block">childRepository.deleteAll(childrenToDelete);</div><div class="markdown-block">}</div><div class="markdown-block">Trong đoạn service trên em ko hề gọi fetch hay getChidren() list B của A, tuy nhiên khi em chạy test thành công nhưng checkDB thì thấy dữ liệu chưa được xóa đi. Em đã có tham khảo qua chat những vẫn chưa nhận đưcọ câu trả lời</div>