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)?因此,我可以通过一辆车而不是汽车列表更新人员汽车。
答案 0 :(得分:0)
orphanRemoval意味着您只需从集合中删除对象,而不是在其上调用em.remove()。看来你正在做相反的事情,所以这无济于事。
您需要从该人的汽车列表中删除该汽车,并合并该人员。如果您级联合并,那么您根本不需要单独合并汽车,或者在其上调用删除。
只有在分离对象时才需要merge。如果您在同一个EntityManager /事务中进行更改,则根本不需要调用merge。