0
public class Person{

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

public class Car{
  Here Attribs    
}

このコードでは、リストの要素の代わりに1台の車を削除/更新するとします。更新/削除しますか?

例:

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)にカスケードされることをどのように保証できますか?だから私は車のリストの代わりに1台の車を介して人の車を更新することができます。

4

1 に答える 1

0

orphanRemovalは、コレクションからオブジェクトを削除するだけで、em.remove()を呼び出さないことを意味します。あなたは反対のことをしているようですので、これは役に立ちません。

その人の車のリストから車を削除し、その人をマージする必要があります。マージをカスケード接続する場合は、車を個別にマージしたり、削除を呼び出したりする必要はありません。

マージは、オブジェクトが切り離されている場合にのみ必要です。同じEntityManager/トランザクション内で変更を行う場合は、mergeを呼び出す必要はまったくありません。

于 2012-04-04T14:13:24.057 に答える