【问题标题】:Forcing JPA query to return eagerly all collections / fields强制 JPA 查询急切地返回所有集合/字段
【发布时间】:2013-03-30 13:10:32
【问题描述】:

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

【问题讨论】:

    标签: java web-services jpa eclipselink


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-12-17
        • 1970-01-01
        • 2013-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-19
        • 2013-02-04
        • 1970-01-01
        相关资源
        最近更新 更多