ERLEDIGT
JA
JA
ANTWORTEN
1
1
ZUGRIFFE
209
209
EMPFEHLEN
-
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 soAber eigentlich sollte das ganze nur so aussehenCode java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
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(); }
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?Code java:1 2 3 4
...session start... vehicle = (Vehicle)session.load(Vehicle.class, vehicle.getId()) ...session ende... VehicleList.getInstance().fireModelChanged();
Weis jemand Rat?
Danke
-
Hallo,
ich kann dir keine Lösung sagen, aber ich kann dir erklären warum die 2. Variante nicht funktioniert.
Vehicle und ein Feld aus deiner Liste sind Referenzen auf ein Object im Speicher, d. h. änderst du mit einer Referenz was an dem Object, siehst du das bei der anderen Referenz auch. Du weist aber Vehicle ein neues Object zu, also zeigen Vehicle und die Referenz aus deiner Liste nicht mehr auf das gleiche Object, sonder auf 2 Verschiedene.
Ich hoffe das hilft dir mal weiter.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
Ähnliche Themen
-
dll referenzen
Von DerStauner im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 25.04.09, 09:10 -
Referenzen
Von Nob im Forum PHPAntworten: 3Letzter Beitrag: 24.04.07, 20:34 -
Roboter Referenzen
Von Sneer im Forum 3D Studio MaxAntworten: 3Letzter Beitrag: 10.10.06, 11:07 -
VectorWorks 10 - Referenzen
Von Yeehaa im Forum Vektor-ProgrammeAntworten: 0Letzter Beitrag: 19.12.03, 11:51 -
C Referenzen
Von FactorX im Forum C/C++Antworten: 3Letzter Beitrag: 01.05.02, 16:10





Zitieren

Login





