두 개의 엔터티 사용자 및 부서가 있습니다. 두 엔터티 (OneToMany 및 ManyToOne) 사이에 양방향 관계가 있으며, 서비스 클래스에서 관계를 제거하고 다음JPA 양방향에서 엔터티 제거 OneToMany
List<User> originalUserList = userJpaRepository.findAllByDepartment(department);
for (Iterator<User> iterator = originalUserList.iterator(); iterator.hasNext();) {
User user = iterator.next();
if (!department.getDepartmentEmployees().contains(user)) {
user.setDepartment(null);
userJpaRepository.save(user);
}
}
for (User user : department.getDepartmentEmployees()) {
user.setDepartment(department);
userJpaRepository.save(user);
}
Department savedDepartmetn = jpaRepository.save(department);
return savedDepartmetn;
모든 데이터베이스에 반영됩니다 추가하고 사용자를 제거 잘 작동하지만 유일한 문제가에서 마지막 줄에 두 번째는 isntance의 savedDepartment 최대 절전 모드는 선택에서 데이터를 채 웁니다 여전히 분리 된 사용자를 포함하기 때문에 이는 사용자에 대한 변경 사항이 실제로 데이터베이스로 플러시되기 전에 발생합니다. 여기에서 가장 좋은 방법은,
- 내가 부서를 저장하기 전에 (그리고 부서를 절약 트랜잭션이 롤백됩니다 실패 할 경우) 호출자에게 반환하기 전에
- 내가 savedInstance를 새로해야 플러시해야
- 다른 아이디어.
옵션이 정상적으로 작동하며 성능이 저하되지 않습니다. –