Nachladen von Lazy Objekten

y0dA

Top Contributor
Technologien: EJB3, JPA, OpenJPA

Folgende Sachlage:
Ich habe ein Objekt Person selbiges besitzt eine 1:n Beziehung zu Adresse (also eine Person hat mehrere Adressen). Nun habe ich bei der Annotation der Beziehung den Fetchtype auf Lazy gesetzt damit die Adressen nich geladen werden.

Jetzt habe ich aber das Problem dass wenn ich die Adressen "manuell" nachladen möchte selbige nur im DAO geladen werden und danach die Liste wieder null ist. Sprich ich mache im DAO in findById(personId) und vom Ergebnis der Abfrage rufe ich dann den Getter der Adressenliste auf = wird nachgeladen. Danach möchte ich das Person Objekt mit der nachgeladenen Adressenliste an das Service retounieren und im Service ist die Liste dann wieder null.

Abhilfe hierfür?
 

y0dA

Top Contributor
Gibt es, wusste nur bisher nicht dass selbiges existiert und das Prinzip muss ich mir noch ein wenig anschauen - aber es wirkt so als müsste man hierbei ein "neues Statement" absetzen und könnte nicht quasi mittels Aufruf des Getters das Objekt nachladen :)
 
M

maki

Gast
Im Idealfall kennst du deine Use Cases, d.h. du weisst vorher schon ob du die Liste mitlädst oder nicht ;)
 

y0dA

Top Contributor
Ja klar, nur die Liste benötige ich genau nur auf einer Seite und das Objekt wird von Anfang an mitgeschleppt, also die Person.

Da wir aber eigentlich bisher nur JPA Annotationen etc benutzt haben (also nichts von openJPA), meine Frage ob JPA sowas auch anbietet? Kann man vllt nicht auch als Alternative ein FETCH in die named query oder so schreiben?

**EDIT**
Also man kann bei einer named query ein FETCH angeben und man lädt dann gleich die Adressen mit - was hat dann diese Fetchgroup etc für einen Sinn?
 
Zuletzt bearbeitet:

Ähnliche Java Themen


Oben