8

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

4

2 回答 2

9

10.1.3. 获取连接

JPQL 查询可以指定一个或多个连接提取声明,允许查询指定返回实例中的哪些字段将被预提取。

SELECT x FROM Magazine x join fetch x.articles WHERE x.title = 'JDJ'


上面的查询返回 Magazine 实例并保证在返回的实例中已经获取了文章字段。

可以在单独的连接提取声明中指定多个字段:

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

于 2013-04-08T12:44:49.703 回答
2

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

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

于 2013-04-08T13:05:16.490 回答