强制JPA查询急切地返回所有集合/字段

时间:2013-04-08 12:42:54

标签: java web-services jpa eclipselink

我有几种情况,服务器使用JPA从数据库查询对象,然后通过Web服务将对象发送到客户端。 由于客户端在这种情况下需要完整的图形,我希望用急切的加载来覆盖延迟加载的集合,并且可能要求批量加载(用于性能)。 JPA(或EclipseLink)中是否有一种方法可以以通用方式覆盖查询(不重写查询)并请求完整的图形?

2 个答案:

答案 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'


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

答案 1 :(得分:2)

如果您使用的是eclipselink,则可以使用内置查询提示。这样您就不必重写jpql,但可以在java中定义fetch类型。

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Query_Hints#Join_Fetch