2012-04-04 5 views
0
public class Person{ 

@OneToMany(orphanRemoval = true) 
List<Cars> myCars; 
    //Get and Set 
} 

public class Car{ 
    Here Attribs  
} 

이 코드를 사용하면 목록 요소 대신 자동차 한 대를 삭제/업데이트 할 수 있습니다. 업데이트/삭제합니까?JPA 엔티티를 고아 삭제/업데이트하는 방법은 무엇입니까?

예 :

내가 고아 chages (이 경우 사람) 목록 소유자에게 종속 될 것이라는 점을 보장 할 수있는 방법
Person me = DAO.GetPerson(23); 
Car oneCar = me.getCars().get(0); ///Lets say it exits 
//then i update 
oneCar.setThis(4); 
oneCar.setThat(5); 
DAO.UpdateCar(oneCar); //This is just EntityManager.merge 
DAO.DeleteCar(oneCar); //This is just EntityManager.remove 

? 그래서 나는 자동차 목록 대신 자동차 한 대를 통해 자동차를 업데이트 할 수 있습니다.

답변

0

orphanRemoval은 colleciton에서 개체를 제거하고 em.remove()를 호출하지 말아야한다는 것을 의미합니다. 당신이 정반대의 행동을하고있는 것처럼 보입니다. 그래서 도움이되지 않을 것입니다.

사람의 자동차 목록에서 자동차를 제거하고 사람을 병합해야합니다. 캐스케이드를 병합하면 차를 완전히 병합 할 필요가 없으며 제거 할 수도 있습니다.

병합은 개체가 분리 된 경우에만 필요합니다. 동일한 EntityManager/트랜잭션 내에서 변경을 수행하면 병합을 전혀 호출 할 필요가 없습니다.

+0

나는 뭔가 잘못하고 있음을 알고있었습니다. 고맙습니다. –

관련 문제