Ich habe Probleme, herauszufinden, wie man eine Klasse aufbaut, die ein @Embedded
Feld hat, das träge abgerufen werden muss. Ich habe versucht, das Feld mit @Basic(fetch = FetchType.LAZY)
zu kommentieren, aber es bewirkt, dass die Persistenz-API das Feld als Basistyp behandelt, der Serializable
implementiert, so dass es das Feld auf ein BYTEA
-Feld in der Datenbank (postgresql) abbildet. Ich habe es auch auf Derby getestet, und das gleiche passiert.Gibt es eine Möglichkeit, ein @Embedded-Feld faul zu holen?
Ich habe auch versucht, die Felder der @Embeddable
Klasse einzeln mit @Basic(fetch = FetchType.LAZY)
annotieren, anstatt das @Embedded
Feld der Entität zu kommentieren, die es hat. Das generierte Schema ist in diesem Fall korrekt, aber die Felder werden eifrig abgerufen, wenn ich Instanzen der Entität lade.
Mein Verständnis ist, dass die @Basic
Annotation nur für grundlegende Felder/Eigenschaften verwendet wird, so dass der erste Fall erwartet wird. Aber warum werden die Felder der @Embeddable
Klasse eifrig abgerufen, auch wenn sie mit @Basic(fetch = FetchType.LAZY)
annotiert sind? Außerdem weiß ich, dass die Abrufstrategie durch die @Basic
- und Beziehungsanmerkungen spezifiziert werden kann, aber gibt es eine andere Möglichkeit zu spezifizieren, dass Felder träge abgerufen werden sollten? Ich verwende EclipseLink 2.6, aber lassen Sie mich wissen, ob das Verhalten für andere Versionen von EclipseLink oder für einen anderen Anbieter unterschiedlich ist.