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

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

public class Car{ 
    Here Attribs  
} 

Mit diesem Code, wenn ich ein Auto anstelle des Elements der Liste lösche/aktualisiere. Wird es aktualisiert/gelöscht?Wie verwaiste JPA-Entitäten löschen/aktualisieren?

Beispiel:

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 

Wie kann ich garantieren, dass die Waise chages wird Kaskade in die Liste Inhaber (Person in diesem Fall) sein? So kann ich die Personenkraftwagen über ein Auto anstelle der Liste der Autos aktualisieren.

Antwort

0

OrphanRemoval bedeutet, dass Sie nur das Objekt aus der Sammlung entfernen und nicht em.remove() aufrufen müssen. Es scheint, dass Sie das Gegenteil tun, also wird das nicht helfen.

Sie müssen das Auto aus der Personenliste der Person entfernen und die Person zusammenführen. Wenn Sie die Zusammenführung kaskadieren, müssen Sie das Auto nicht separat zusammenführen oder remove aufrufen.

Zusammenführen ist nur erforderlich, wenn Ihre Objekte getrennt sind. Wenn Sie Ihre Änderungen innerhalb desselben EntityManager/derselben Transaktion vornehmen, müssen Sie die Zusammenführung überhaupt nicht aufrufen.

+0

Ich wusste, dass ich etwas falsch gemacht habe. Danke Mann. –