如何忽略JPQL中的一对一关系?

时间:2012-07-26 18:54:20

标签: jpa jpql

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

假设我的实体是Ham,它与三明治有多对一关联。获取火腿列表的我的JPQL可能如此:

Select H from Ham H

有没有办法在JPQL中明确忽略Ham与三明治的关联,这样我的数据库就不会因为一系列选择三明治查询而不依赖于连接获取?

1 个答案:

答案 0 :(得分:1)

定义ManyToOne关系时,将其标记为“延迟加载”(通过使用anotations,它就像):

@ManyToOne(fetch=FetchType.LAZY)

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