Ich komme zu der Erkenntnis, dass JPA nicht wie erwartet funktioniert, da ich oft mit mehreren Instanzen einer einzelnen Entität in einer Sitzung enden.
Hier ist der Fall: Ein Elternteil hat eine Sammlung von Kindern, die mit @OneToMany zugeordnet sind
In einer einzigen Methode:
- Holen Sie eine Instanz des Elternteils P
- Laden Sie die Sammlung der Kinder mit P.getChilds(): Sie enthält eine Instanz von C1 und C2
- dann suchen Sie ein spezifisches Kind mit einer optimierten JPA-Abfrage, wobei der Elternteil P als Parameter fungiert: Kind C = dao.getSpecificChild(P)
Hier würde ich erwarten, dass C eine der beiden bereits geladenen Instanzen (C1 oder C2) ist. Ich dachte, JPA würde die bereits vorhandene Instanz in seiner aktuellen Sitzung überprüfen. Aber JPA lädt eine neue Instanz von C (ob es sich um C1 oder C2 handelt, spielt hier keine Rolle).
Dann habe ich zwei verschiedene Instanzen von C.
Meine Frage lautet: Ist dies das erwartete Verhalten? Wenn ja, wie kann ich meine Entitätsinstanzen in einer Sitzung vereinen?
Prost