2014-05-21 146 views
0

您好我已經創建了employeeentity和employeedepartment實體,在這裏我已經建立了這兩個實體之間的雙向映射。現在的問題是更新時,我需要從表中刪除所有的孩子,我需要將新數據保存到該列表中,但是這裏的列表並沒有從表格中刪除,我的實體映射就像這樣。休眠刪除子行多對一雙向映射

在EmployeeDepartmentEntity

@ManyToOne 
     @JoinColumn(name = "employeeid") 
     private EmployeeEntity employeeentity; 


**In EmployeeEntity** 


@OneToMany(mappedBy = "employeeentity") 
    @OrderBy("id") 
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.remove}) 
    private List<EmployeeDeparment> empdep = new ArrayList<EmployeeDeparment>(); 

我做這樣的

Session session = HibernateUtil.getSessionFactory().openSession(); 
     EmployeeEntity editemployee = (EmployeeEntity) session.get(EmployeeEntity.class, 95); 
     List<EmployeeDeparment> list = editemployee.getEmpdep(); 

     Iterator<EmployeeDeparment> ite = list.iterator(); 

     while (ite.hasNext()) { 
      EmployeeDeparment value = ite.next(); 
      ite.remove(); 
     } 
     session.saveOrUpdate(editemployee); 
     session.beginTransaction().commit(); 

更新:

如果我在employeeEntity。如果我刪除這樣只使用saveorupdate

for(EmployeeDeparment deparment:list){ 
     session.delete(deparment); 
     } 

我得到例外。

Exception in thread "main" org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): 
+0

誰能幫我請。 – user3511026

回答

-1

從迭代器中移除與從列表中移除迭代器的派生方法不同。迭代對象被分離。

+0

應該是評論不回答。 –

0
Session session = HibernateUtil.getSessionFactory().openSession(); 
    Transaction tx = session.beginTransaction(); 
    EmployeeEntity editemployee = (EmployeeEntity) session.get(EmployeeEntity.class, 95); 
    List<EmployeeDeparment> list = editemployee.getEmpdep(); 

    Iterator<EmployeeDeparment> ite = list.iterator(); 

    while (ite.hasNext()) { 
     EmployeeDeparment value = ite.next(); 
     session.delete(value) 
    } 
    session.saveOrUpdate(editemployee); 
    tx.commit(); 
    session.close(); 

使用此並刪除@cascade

@OneToMany(mappedBy = "employeeentity") 
    @OrderBy("id") 
    private List<EmployeeDeparment> empdep = new ArrayList<EmployeeDeparment>(); 
+0

這樣的異常:org.hibernate.ObjectDeletedException:刪除的對象將被級聯重新保存(從關聯刪除已刪除的對象):[com.treamis.entity.EmployeeDeparment#123] – user3511026

+0

@ user3511026請參閱編輯。 –

+0

比我需要單獨存儲數據正確如果我沒有cascde – user3511026