Hallöle,
auch auf die Gefahr hin dass es sich hierbei um einen totalen Anfängerfehler handelt...
In meiner Anwendung lade ich zu beginn meine Daten mittels Hibernate in das Modell. Einzelne Objekte können in einem Editor geöffnet und bearbeitet werden. Da ich recht stark Mit Master- und Detailsseiten arbeite wird jede Änderung sofort in das Modell gespeichert und dem Benutzer angezeigt dass der Editor dirty ist. Speichert er das ganze wird alles in die DB geschrieben, will er aber nicht speichern so soll der Stand für das Objekt im Editor aus der Datenbank wiederhergestellt werden.
Das ganze mache ich im Moment so
Aber eigentlich sollte das ganze nur so aussehen
das sollte doch eigentlich ausreichen, da die Variable vehicle auch nur eine referenz auf das Objekt im Modell (VehicleList) ist. Die erste (sehr sehr unschöne)Variante funktioniert definitiv, die zweite nicht?
Weis jemand Rat?
Danke
auch auf die Gefahr hin dass es sich hierbei um einen totalen Anfängerfehler handelt...
In meiner Anwendung lade ich zu beginn meine Daten mittels Hibernate in das Modell. Einzelne Objekte können in einem Editor geöffnet und bearbeitet werden. Da ich recht stark Mit Master- und Detailsseiten arbeite wird jede Änderung sofort in das Modell gespeichert und dem Benutzer angezeigt dass der Editor dirty ist. Speichert er das ganze wird alles in die DB geschrieben, will er aber nicht speichern so soll der Stand für das Objekt im Editor aus der Datenbank wiederhergestellt werden.
Das ganze mache ich im Moment so
Java:
public void dispose(){
if(isDirty){
// editor is still dirty -> user doesn't want to save
// restore the vehicle from database to get its persistent state
Session session = RcpPlugin.getDefault().getNewSession();
Transaction tx = session.beginTransaction();
Vehicle a = (Vehicle)session.load(Vehicle.class, vehicle.getId());
VehicleList.getInstance().getVehicleList().remove(vehicle);
VehicleList.getInstance().getVehicleList().add(a);
VehicleList.getInstance().fireModelChanged();
tx.commit();
session.close();
}
super.dispose();
}
Java:
...session start...
vehicle = (Vehicle)session.load(Vehicle.class, vehicle.getId())
...session ende...
VehicleList.getInstance().fireModelChanged();
Weis jemand Rat?
Danke