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返回給調用者之前刷新
- 任何其他的想法。
選項工作正常,我猜沒有性能影響。 –