我有几种情况,服务器使用JPA从数据库查询对象,然后通过Web服务将对象发送到客户端。 由于客户端在这种情况下需要完整的图形,我希望用急切的加载来覆盖延迟加载的集合,并且可能要求批量加载(用于性能)。 JPA(或EclipseLink)中是否有一种方法可以以通用方式覆盖查询(不重写查询)并请求完整的图形?
答案 0 :(得分:9)
10.1.3。获取联接
JPQL查询可以指定一个或多个连接提取声明,这允许查询指定预取的返回实例中的哪些字段。
SELECT x FROM Magazine x join fetch x.articles WHERE x.title = 'JDJ'
上面的查询返回Magazine实例,并保证在返回的实例中已经获取了articles字段。
可以在单独的连接提取声明中指定多个字段:
SELECT x FROM Magazine x join fetch x.articles join fetch x.authors WHERE x.title = 'JDJ'
答案 1 :(得分:2)
如果您使用的是eclipselink,则可以使用内置查询提示。这样您就不必重写jpql,但可以在java中定义fetch类型。
http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Query_Hints#Join_Fetch