2014-05-21 75 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