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#children
的 FetchType
无关紧要。我没有尝试过其他实现,但我非常怀疑它会有所不同。
例如我有以下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#children
的 FetchType
无关紧要。我没有尝试过其他实现,但我非常怀疑它会有所不同。