Hallo,
ich habe folgendes Problem und komme nicht weiter.
Ich habe ein Objekt "VeVeranstaltung". Dazu gehört eine Collection "VeKonzert".
Auf folgende Weise lösche ich ein Konzert aus der Collection.
Code:
session.delete(selected);
if (set != null) {
set.remove(selected);
}
Das "set" wird in einer JTable dargestellt. "selected" ist das ausgewählte Element in der Tabelle. Aus der tabelle verschwindet das Konzert dann auch. Wenn ich jetzt ein session.flush() ausführe wird das ganze auch auf die Datenbank geschrieben.
Jetzt möchte ich diese Änderung aber nicht speichern, weil ich das Konzert z.B. versehentlich gelöscht habe, sondern die Veranstaltung mitsamt aller Konzerte neu laden. session.refresh(veranstaltung) geht bei Lazy Loading laut anderen Topics hier im Forum nicht. In einem Topic habe ich aber folgende Variante gefunden:
Code:
session.evict(veranstaltung);
session.get(VeVeranstaltung.class, veranstaltung.getVerid();
Gefunden unter:
http://forum.hibernate.org/viewtopic.ph ... 3e7a496574
Das funktioniert auch ganz ganz prima, solange ich das Objekt "veranstaltung" selbst ändere, z.B. einen neuen Titel eingebe, dann nicht speichere sondern mit evtcit() und get() neu lade, dann habe ich den alten Titel wieder und kann normal weiterarbeiten.
Wenn ich aber die Collection ändere, (z.B. ein Konzert entferne) wird beim neu laden das Konzert zwar wieder in der JTable angezeigt, aber die Abfrage session.isDirty() ergibt TRUE. Dadurch bekomme ich in meiner Anwendung ständig die Abfrage "Möchten Sie speichern?" obwohl ich ja den alten Stand wieder haben möchte. Nach einem klick auf "ja" wird ein Commit aufgerufen, es fehlt dann das Konzert in der Veranstaltung.
Bei einem Klick auf "nein" bleibt session.isDirty() == true.
Wenn ich mir das Objekt "veranstaltung" in meiner Entwicklertool (JDeveloper) genauer anschauen stelle ich fest, das nach dem Aufruf durch session.get(). Alle Daten von "veranstaltung" wieder da sind, aber in der zugeordneten collection getVeKonzerts() is das Set "null". Hier wird die Collection also nicht neu von der Datenbank geladen. session.load() habe ich auch schon ausprobiert. Dann wird nicht mal mehr der Titel neu geladen, alle Informationen werden mir als "null" angezeigt.
kann hier jemand weiterhelfen? Oder muss ich noch mehr Informationen geben?
Vielen Dank schonmal im Vorraus[/quote]