1
我有两个实体User和Department,这两个实体(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仍将包含已删除的用户,因为Hibernate从选择填充其数据发生在对用户所做的更改实际刷新到数据库之前。什么是这里最好的办法,
- 我应该保存部门之前(如果储蓄部门未将事务回滚)
- 我应该刷新savedInstance返回给调用者之前刷新
- 任何其他的想法。
选项工作正常,我猜没有性能影响。 –