0
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 

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

4

1 回答 1

0

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

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

仅当您的对象已分离时才需要合并。如果您在同一个 EntityManager/事务中进行更改,那么您根本不需要调用合并。

于 2012-04-04T14:13:24.057 回答