"JOIN FETCH" 和 "JOIN" 有什么区别?

What's the difference between "JOIN FETCH" and "JOIN"?

假设我有一个 Person 实体,它与 Phone 实体有 @OneToMany 关系。如果我想急切地获取与 Person 关联的 Phone 个实体,我有 2 个选项:

SELECT p FROM Person p JOIN p.phones

SELECT p FROM person p JOIN FETCH p.phones

那么它们有什么区别呢?

请记住,JOIN FETCH 最后始终是 JOIN。 默认情况下 @OneToMany 关系是延迟加载的。 使用 JOIN FETCH 可以提前加载相关实体。

阅读 Piotr Nowicki 的 FETCH JOIN is still a JOIN

可以找到更多信息