We want to connect the people who have knowledge to the people who need it, to bring together people with different perspectives so they can understand each other better, and to empower everyone to share their knowledge.
@OneToMany( mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true ) private List<B> childrens = new ArrayList<>();
@Transactional public void deleteChildren(Long aId, List<Long> deleteIds) { A parent = parentRepository.findById(aId) .orElseThrow(); List<B> existingChildren = childRepository.findByParentId(aId); // kiểm tra deleteIds có thuộc về parent hay không List<B> childrenToDelete = existingChildren.stream() .filter(child -> deleteIds.contains(child.getId())) .toList(); childRepository.deleteAll(childrenToDelete); }
parentRepository.save(parent);
@OneToMany
List<B> existingChildren = childRepository.findByParentId(aId);
public interface ChildRepository extends JpaRepository<B, Long> { @Modifying(clearAutomatically = true, flushAutomatically = true) @Query(""" DELETE FROM B child WHERE child.parent.id = :parentId AND child.id IN :deleteIds """) int deleteByParentIdAndIds( @Param("parentId") Long parentId, @Param("deleteIds") Collection<Long> deleteIds ); } @Transactional public void deleteChildren(Long parentId, Collection<Long> deleteIds) { if (deleteIds == null || deleteIds.isEmpty()) { return; } if (!parentRepository.existsById(parentId)) { throw new EntityNotFoundException( "Parent not found: " + parentId ); } int deletedCount = childRepository.deleteByParentIdAndIds( parentId, deleteIds ); if (deletedCount != deleteIds.size()) { throw new IllegalArgumentException( "One or more child IDs do not belong to parent: " + parentId ); } }
2.2K Point(s)
1.2K Point(s)
313 Point(s)
178 Point(s)
138 Point(s)
Input your email to receive reset password link, or if you remember your password, you can click