2013-04-08 1 views
8

Ich habe einige Szenarien, in denen der Server Objekte aus der Datenbank mithilfe von JPA abfragt und dann die Objekte über Webdienste an den Client sendet.
Da der Client in solchen Szenarien den vollständigen Graphen erwartet, würde ich die Lazy Loaded Collections mit dem Eager Loading überschreiben und wahrscheinlich einen Batch Laden (für die Performance) anfordern. Gibt es in JPA (oder EclipseLink) eine Möglichkeit, die Abfrage in generischer Weise zu überschreiben (ohne die Abfrage neu zu schreiben) und das vollständige Diagramm anzufordern?JPA-Abfrage erzwingen, um alle Sammlungen/Felder eifrig zurückzugeben

Antwort

9

10.1.3. Fetch Joins

JPQL-Abfragen können eine oder mehrere Join-Fetch-Deklarationen angeben, mit denen die Abfrage angeben kann, welche Felder in den zurückgegebenen Instanzen im Voraus abgerufen werden.
SELECT x FROM Magazin x Join fetch x.articles WHERE x.title = 'JDJ'
Die obige Abfrage gibt Magazine-Instanzen zurück und garantiert, dass das articles-Feld bereits in den zurückgegebenen Instanzen abgerufen wird.
Mehrere Felder können in separaten beitreten holen Erklärungen angegeben werden:
SELECT x FROM Magazine x verbinden x.articles holen beitreten x.authors holen WHERE x.title = 'JDJ'

Quelle: http://docs.oracle.com/cd/E13189_01/kodo/docs40/full/html/ejb3_overview_query.html#ejb3_overview_join_fetch