如何孤立删除/更新JPA实体?

时间:2012-04-04 04:27:49

标签: java jpa orm eclipselink

public class Person{

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

public class Car{
  Here Attribs    
}

使用此代码,如果我删除/更新一辆车而不是列表的元素。它是否更新/删除?

示例:

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 

我如何保证孤儿chages将级联到列​​表所有者(在这种情况下为PErson)?因此,我可以通过一辆车而不是汽车列表更新人员汽车。

1 个答案:

答案 0 :(得分:0)

orphanRemoval意味着您只需从集合中删除对象,而不是在其上调用em.remove()。看来你正在做相反的事情,所以这无济于事。

您需要从该人的汽车列表中删除该汽车,并合并该人员。如果您级联合并,那么您根本不需要单独合并汽车,或者在其上调用删除。

只有在分离对象时才需要

merge。如果您在同一个EntityManager /事务中进行更改,则根本不需要调用merge。