spring-data-jpa 为什么Hibernate在手动传递id时使用join进行select调用?

zhte4eai  于 2022-11-10  发布在  Spring
关注(0)|答案(2)|浏览(144)

在Student类中,我手动传递id,并且所有实体关系都处于LAZY模式。
但是因为我传递的是id,Spring DATA JPA(Hibernate)会把它当作一个合并请求并进行SELECT调用,并且会尝试合并它。但是我不明白为什么它要尝试JOIN所有的关系。
我期待对学生表的选择调用,而不是联接其他表。我不明白为什么会发生这种情况?
第一个问题:
实体关系图

3phpmpom

3phpmpom1#

这样做是因为您正在使用CascadeType.ALL,这意味着Hibernate也应该为merge操作级联。为了级联,Hibernate必须首先加载数据,而不是通过执行单独的选择来加载数据,Hibernate使用联接。

jyztefdp

jyztefdp2#

我不确定City,但对于其他字段,Hibernate需要连接来确定相应的字段是否为null,在返回根实体之前,它需要知道这一点。

相关问题