首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >inner join和inner join fetch有什么区别?

inner join和inner join fetch有什么区别?
EN

Stack Overflow用户
提问于 2014-02-04 01:14:37
回答 3查看 11K关注 0票数 5

我对HQL查询有这样的疑问

代码语言:javascript
复制
"SELECT c from Account c inner join c.person " 
"SELECT c from Account c inner join fetch c.person"

我可以使用fetch吗? equals?...When?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-04 01:18:59

Koitoer提到的是正确的

此外,在您的帐户人员通常设置为延迟加载,即使您将其加入HQL,收集人员可能无法加载,您必须使用'fetch‘来加载它们。

票数 4
EN

Stack Overflow用户

发布于 2014-02-04 01:16:59

Fetch join允许急切地加载集合,通常用于涉及集合的关系。这是一种急切地检索所有记录的方法,以避免在会话关闭或您将对象移动到视图时出现任何问题。

FETCH JOINs

票数 7
EN

Stack Overflow用户

发布于 2020-01-05 14:13:54

注释:假设person是Account类中的一个对象

"SELECT acc from Account acc inner join acc.person"

在这种情况下,Hibernate将返回所有与person关联的Account对象(即acc.person不为空)。

但是,如果您的用例要求您稍后在代码中执行acc.getPerson(),那么Hibernate将在内部运行另一个查询,以获取与acc关联的Person对象,前提是会话仍处于打开状态。

因此,为了保存额外查询,最好使用

"SELECT acc from acc inner join fetch acc.person“

当您知道稍后将需要使用关联的对象(本例中为Person对象)时。

另外,为了更好地理解,请参阅答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21533400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档