G
Guest
Gast
Hallo zusammen,
Ich arbeite momentan mit EclipseLink und verstehe nicht so ganz die Funktionsweise der merge()-Methode des EntityManagers.
Hier mein Fall:
Ich habe ein Objekt Immobilie, dass eine 1:1 Referenz zu Stammdaten hat. Die STammdaten haben eine 1:n Referenz zu Grundbücher und jedes Grundbuch hat eine 1:n Beziehung zu Grundstücken.
Dieses Baumkonstrukt erhalte ich auch von meinem Client.
Nun dachte ich mir folgendes. Ich brauche lediglich die Immobilie mit allen Refernzen nach unten der merge Methode zu übergeben und diese ermittelt die Änderungen und führt auf entsprechende Teilobjekte die Änderungen durch. Teile die sich nicht geändert haben hängen allerdings nicht am Baum.
Dummerweise macht die merge-Methode dies nicht. Obwohl eine Änderung im untersten Teil des Baumes stattgefunden hat (Grundstück) wird dies nicht als Änderung erkannt, sondern versucht dieses Grundstück neu anzulegen, was zu einer Exeption führt, da das Grundstück mit jener Id bereits vorhanden ist.
Meine Fragen:
Gehe ich recht in der Annahme, dass das merge komplexe Baumstrukturen zusammenführen kann, oder muss ich jede Ebene des Baumes einzeln mergen?
Gibt es Links zu Implementierungen die eine solche Komplexität vorweisen?
Habe ich die merge-Methode richtig verstanden? Oder liege ich da falsch?
Wäre um jede Hilfe dankbar.
Ich arbeite momentan mit EclipseLink und verstehe nicht so ganz die Funktionsweise der merge()-Methode des EntityManagers.
Hier mein Fall:
Ich habe ein Objekt Immobilie, dass eine 1:1 Referenz zu Stammdaten hat. Die STammdaten haben eine 1:n Referenz zu Grundbücher und jedes Grundbuch hat eine 1:n Beziehung zu Grundstücken.
Dieses Baumkonstrukt erhalte ich auch von meinem Client.
Nun dachte ich mir folgendes. Ich brauche lediglich die Immobilie mit allen Refernzen nach unten der merge Methode zu übergeben und diese ermittelt die Änderungen und führt auf entsprechende Teilobjekte die Änderungen durch. Teile die sich nicht geändert haben hängen allerdings nicht am Baum.
Dummerweise macht die merge-Methode dies nicht. Obwohl eine Änderung im untersten Teil des Baumes stattgefunden hat (Grundstück) wird dies nicht als Änderung erkannt, sondern versucht dieses Grundstück neu anzulegen, was zu einer Exeption führt, da das Grundstück mit jener Id bereits vorhanden ist.
Meine Fragen:
Gehe ich recht in der Annahme, dass das merge komplexe Baumstrukturen zusammenführen kann, oder muss ich jede Ebene des Baumes einzeln mergen?
Gibt es Links zu Implementierungen die eine solche Komplexität vorweisen?
Habe ich die merge-Methode richtig verstanden? Oder liege ich da falsch?
Wäre um jede Hilfe dankbar.