您好我正在更新父實體(部門)有一些孩子(僱員),以及更新我想刪除所有的孩子和添加新的兒童組。而且我對DB方有EMPLOYEE_NAME的唯一限制。首先,我找到部門,並打電話給清晰(收集清楚)的員工名單,然後向該部門添加新的子女並提交。但是我得到了獨特的約束違規。如果我在清除()後使用em.flush(),它正在刪除子節點並插入新子節點。但正如我所知Flush()是一個特殊用途,commit也在內部使用flush()。有沒有解決方案來刪除和插入一個單一的交易中的孩子?而我在百貨實體在JPA,是em.flush()是例外用法或不是
public void deleteEmployee(Department updatingDepartment){
List<Employee> employees = new ArrayList<Employee>();
Employee employee1 = new Employee();
employee1.setEmployeeAlary(16667);
employee1.setEmployeeName("manju");
Employee employee2 = new Employee();
employee2.setEmployeeAlary(16667);
employee2.setEmployeeName("SUNIL");
entityManager.getTransaction().begin();
Department foundDepartment = entityManager.find(Department.class, updatingDepartment.getDepartmentId());
foundDepartment.getEmployees().clear();
employee2.setDepartment(foundDepartment);
employee1.setDepartment(foundDepartment);
employees.add(employee1);
employees.add(employee2);
/*entityManager.flush();*/
foundDepartment.getEmployees().add(employee1);
foundDepartment.getEmployees().add(employee2);
entityManager.merge(foundDepartment);
entityManager.getTransaction().commit();
}
非常感謝您的信息。但我的例子是不是批處理操作,與刷新我無法實現我的要求(唯一約束違規異常),無需刷新是不可能實現的? – manjunath