【发布时间】:2013-03-30 13:10:32
【问题描述】:
服务器使用 JPA 从数据库中查询对象,然后通过 Web 服务将对象发送到客户端的情况很少。
由于客户端在这种情况下期望完整的图表,我想用急切加载覆盖延迟加载的集合,并可能请求批量加载(为了性能)。
JPA(或 EclipseLink)中是否有办法以通用方式覆盖查询(无需重写查询)并请求完整的图表?
【问题讨论】:
标签: java web-services jpa eclipselink
服务器使用 JPA 从数据库中查询对象,然后通过 Web 服务将对象发送到客户端的情况很少。
由于客户端在这种情况下期望完整的图表,我想用急切加载覆盖延迟加载的集合,并可能请求批量加载(为了性能)。
JPA(或 EclipseLink)中是否有办法以通用方式覆盖查询(无需重写查询)并请求完整的图表?
【问题讨论】:
标签: java web-services jpa eclipselink
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'
【讨论】:
如果您使用的是 eclipselink,您可以使用内置的查询提示。这样你就不必重写你的 jpql,但你可以在 java 中定义 fetch 类型。
http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Query_Hints#Join_Fetch
【讨论】: