Hallo zusammen,
aktuell sitzen wir hier vor einem JPA Problem welches uns absolut hilflos zurück lässt:
Zuerst die Tools:
- Eclipse als IDE
- JPA 2.0 mit Hibernate als Provider
- Spring (falls das wichtig ist)
Situation:
Wir haben eine Baumstruktur persistiert. D.h. ein Knoten kann viele Kinder haben. Jeder Knoten aber nur 1 Elternknoten.
[1]Wir laden nun mittels READ den Elternknoten (ohne die Kindknoten mitzuladen).
[2]Danach laden wir einen Kindknoten dieses Elternknoten, ebenfalls mittels READ.
Anschließend testen wir:
Als Antwort erhalten wir "FALSE"!
Nun schauen wir uns die Objekte im Debugger an. Dort ist klar erkennbar, dass der Elternknoten eigentlich den Kindknoten sehr wohl enthält. Jedoch findet das Set (welches alle Kinder enthält) den Kindknoten nicht wieder.
Nun haben wir etwas anderes versucht:
[1]Wir laden nun mittels READ den Elternknoten (ohne die Kindknoten mitzuladen).
[2]Wir rufen nun "em.merge(elternknoten)" auf. Ja, der Knoten wurde gerade erst gelesen.
[3]Danach laden wir einen Kindknoten dieses Elternknoten, ebenfalls mittels READ.
Anschließend testen wir:
Als Antwort erhalten wir nun "TRUE"!
Was geht hier vor? Wieso findet das Set die Kinder nicht mehr bzw. wieso hilft merge?
aktuell sitzen wir hier vor einem JPA Problem welches uns absolut hilflos zurück lässt:
Zuerst die Tools:
- Eclipse als IDE
- JPA 2.0 mit Hibernate als Provider
- Spring (falls das wichtig ist)
Situation:
Wir haben eine Baumstruktur persistiert. D.h. ein Knoten kann viele Kinder haben. Jeder Knoten aber nur 1 Elternknoten.
[1]Wir laden nun mittels READ den Elternknoten (ohne die Kindknoten mitzuladen).
[2]Danach laden wir einen Kindknoten dieses Elternknoten, ebenfalls mittels READ.
Anschließend testen wir:
Java:
elternknoten.getKinder().contains(kindKnoten);
Als Antwort erhalten wir "FALSE"!
Nun schauen wir uns die Objekte im Debugger an. Dort ist klar erkennbar, dass der Elternknoten eigentlich den Kindknoten sehr wohl enthält. Jedoch findet das Set (welches alle Kinder enthält) den Kindknoten nicht wieder.
Nun haben wir etwas anderes versucht:
[1]Wir laden nun mittels READ den Elternknoten (ohne die Kindknoten mitzuladen).
[2]Wir rufen nun "em.merge(elternknoten)" auf. Ja, der Knoten wurde gerade erst gelesen.
[3]Danach laden wir einen Kindknoten dieses Elternknoten, ebenfalls mittels READ.
Anschließend testen wir:
Java:
elternknoten.getKinder().contains(kindKnoten);
Als Antwort erhalten wir nun "TRUE"!
Was geht hier vor? Wieso findet das Set die Kinder nicht mehr bzw. wieso hilft merge?