【发布时间】:2013-06-30 03:48:19
【问题描述】:
请帮助我了解在哪里使用常规 JOIN 以及在哪里使用 JOIN FETCH。
例如,如果我们有这两个查询
FROM Employee emp
JOIN emp.department dep
和
FROM Employee emp
JOIN FETCH emp.department dep
它们之间有什么区别吗?如果是,什么时候使用?
【问题讨论】:
-
你可以在这里找到它link阅读14.3。关联和连接
-
我已经阅读了该文档,但仍然不知道应该在哪里使用 JOIN 以及在哪里使用 JOIN FETCH。
-
如果您将@oneToOne 映射设置为 FetchType.LAZY 并且您使用第二个查询(因为您需要将 Department 对象作为 Employee 对象的一部分加载)Hibernate 会做的是,它将发出查询到为从 DB 中获取的每个 Employee 对象获取 Department 对象。稍后在代码中,您可能会通过 Employee 到 Department 单值关联访问 Department 对象,并且 Hibernate 不会发出任何查询来获取给定 Employee 的 Department 对象。请记住,Hibernate 仍会发出与其获取的员工数量相等的查询。
-
协助寻找文档~Fetching Strategies
-
@ShameeraAnuranga 我认为在这种情况下你需要一个左外连接。
标签: java hibernate join hql fetch