EAGER FetchType 是否填充到其 children

Does EAGER FetchType populates to its children

例如我有以下class结构

class Parent {

fetch = FetchType.EAGER
List<Child> children;
}

class Child {
fetch = FetchType.LAZY
List<SuperChild> superChildren;

}

问题是 当我获取 Parent object 时,例如:

ParentRepository::findById();

superChildren 会因为 parents EAGER 或他们的 LAZY 覆盖它而被获取吗?

FetchType 的文档中没有任何内容暗示关联实体自身 FetchType 的任何行为。请注意 LAZY 的描述(这是来自 JPA 规范的文档):

"LAZY 策略是对持久性提供程序运行时的提示,即在首次访问数据时应延迟获取数据。允许实现急切获取 LAZY 策略提示已针对的数据指定。"

所以作为旁注,一般来说 LAZY 可能无法保证,具体取决于实施提供商。

Hibernate(最流行的 JPA 实现)将延迟获取 superChildren,因此 Parent#childrenFetchType 无关紧要。我没有尝试过其他实现,但我非常怀疑它会有所不同。