0

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

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

Select H from Ham H

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

4

1 回答 1

2

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

@ManyToOne(fetch=FetchType.LAZY)

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

于 2012-07-26T19:00:08.187 回答