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

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

public class Car{ 
    Here Attribs  
} 

このコードでは、リストの要素ではなく1台の車を削除/更新するとします。更新/削除しますか?JPAエンティティの孤立/削除方法

例:

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は、リストの所有者(この場合は人物)にカスケード接続されることを保証することができますか?だから私は車のリストの代わりに1台の車で人の車を更新することができます。

答えて

0

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

人の車のリストから車を取り外して、人をマージする必要があります。カスケードしてマージすると、カーを別々にマージする必要はなく、そのカーネルでremoveを呼び出すこともできます。

オブジェクトをデタッチする場合にのみマージが必要です。同じEntityManager /トランザクション内で変更を行った場合、マージをまったく呼び出す必要はありません。

+0

私は何か間違っていたことを知っていました。高尚な男。 –

関連する問題