【问题标题】:How to ignore a to-one relationship in JPQL?如何忽略 JPQL 中的一对一关系?
【发布时间】:2012-07-25 10:38:47
【问题描述】:

我正在一起处理一个查询,该查询需要加载与另一个实体具有多对一关系的实体列表,该实体本身与另一个实体具有多对一关系。我不需要关联加载的任何数据,但是在查看查询日志时,我发现 JPA 无论如何都会自动加载它。我的理解是,发生这种情况是因为我的 JPA 实现无法创建代理来表示关联实体,就像它可以对集合所做的那样。

假设我的实体是 Ham,它与 Sandwich 具有多对一的关联。我获取火腿列表的 JPQL 可能如下所示:

Select H from Ham H

有没有办法在 JPQL 中明确忽略 Ham 与三明治的关联,这样我的数据库就不会在不诉诸连接提取的情况下受到一系列多余的选择三明治查询的冲击?

【问题讨论】:

    标签: jpa jpql


    【解决方案1】:

    在定义多对一关系时,将其标记为“延迟加载”(通过使用注释,类似于):

    @ManyToOne(fetch=FetchType.LAZY)
    

    这样,上面的 PQL 将按预期工作。但是,当您需要加载 Sandwich 时,您必须添加一个 FETCH JOIN

    【讨论】:

      猜你喜欢
      • 2017-07-07
      • 2014-02-13
      • 2020-04-13
      • 2019-08-16
      • 2013-07-24
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多