Ho alcuni scenari in cui il server interroga gli oggetti dal database utilizzando JPA e quindi invia gli oggetti al client tramite i servizi Web.
Dal momento che il client si aspetta il grafico completo in tali scenari, vorrei sovrascrivere le raccolte pigre caricate con caricamento ansioso e probabilmente richiesta di caricamento in batch (per prestazioni). C'è un modo in JPA (o EclipseLink) per sovrascrivere la query in modo generico (senza riscrivere la query) e richiedere il grafico completo?Forzare la query JPA per restituire avidamente tutti i campi/raccolte
risposta
Se utilizzi eclipselink, puoi utilizzare i suggerimenti di query incorporati. In questo modo non devi riscrivere il tuo jpql, ma puoi definire il tipo di fetch in java.
http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Query_Hints#Join_Fetch
10.1.3. Fetch Joins
Le query JPQL possono specificare una o più dichiarazioni di raccolta join, che consentono alla query di specificare quali campi nelle istanze restituite verranno precaricati.
SELECT x FROM Magazine x join fetch x.articles WHERE x.title = 'JDJ'
La query sopra restituisce le istanze di Magazine e garantisce che il campo degli articoli verrà già recuperato nelle istanze restituite.
campi multipli possono essere specificati in separati join fetch dichiarazioni:
SELEZIONA x dalla rivista x join fetch x.articles uniscono prendere x.authors DOVE x.title = 'JDJ'