hier antwortet mir ja bestimmt eh keiner, aber ich versuchs nochmal...
Code:
public String loadUser(){
Session session = HibernateSessionVerwaltung.getSession();
derUser = (User) session.load(User.class, aUser);
user.setName(derUser.getName());
user.setAge(derUser.getAge());
return "laden";
}
Durch diese Methode habe ich eindeutig "derUser" geladen. darunter fülle ich die bean-properties mit den aktuellen werten.
das aktuell geladene objekt lasse ich mir in einem neuen Formular anzeigen und will es hier verändern. jetzt will ich das geladenen objekt updaten.
klappt aber nicht weil ich immer die oben genannte exception erhalte.
wenn ich merge() benutze wird immer immer der zuletzt eingetragene wert geupdatet, obwohl ich ja eigentlich ein anderes objekt geladen habe.
ich muss dazu sagen. die methode loadUser() startet die session, startet die transaktion, läd das objekt, transaktion wird commit und session geschlossen.
rufe ich jetzt die methode updateUser() auf, dann wird eine neue Session gestartem transaktion gestarte, dann soll das update geschehe, transaktion commitet und session beendet.
wenn ich die doku richtig verstanden habe, dann müßte es doch so gehen, weil ich doch folgendes beherzige
• the application loads an object in the first session
• the object is passed up to the UI tier
• some modifications are made to the object
• the object is passed back down to the business logic tier
• the application persists these modifications by calling update() in a second session
wenn ich nicht wenigstes eine antworz bekomme, dann ist es hier wohl vergebens ;-)