2014-05-21 2 views
0

안녕하세요, 저는이 두 엔티티 간의 양방향 매핑을 설정했습니다. 이제는 업데이트하는 동안 테이블에서 모든 하위 항목을 제거해야합니다. 그 목록에 새로운 데이터를 저장해야하지만, 여기 목록은 테이블에서 제거하지 않습니다. 엔티티 매핑은 이와 같습니다. 나는이많은 양방향 매핑에서 자식 행 삭제 최대 절전 모드

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(); 

업데이트 같은 일을 오전

@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>(); 

EmployeeDepartmentEntity에서

:

내가 이런 식으로 삭제하고있는 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

사람이 제발 도와 수 @cascade 제거합니다. – 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(); 

사용이와

@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

데이터를 개별적으로 저장할 필요가 없습니다. 캐스케이드가없는 경우 – user3511026

관련 문제