例如,我有一个如下的类结构
class Parent { fetch = FetchType.EAGER List<Child> children; } class Child { fetch = FetchType.LAZY List<SuperChild> superChildren; }
问题是在获取父对象时,例如:
ParentRepository::findById();
超生会因为父母的渴望或懒惰而被带走吗?
ijxebb2r1#
没有任何关于 FetchType 意味着与关联实体自身相关的任何行为 FetchType . 甚至注意到 LAZY (这来自jpa规范的文档):“lazy策略是对持久性提供程序运行时的一个提示,即当数据第一次被访问时,应该延迟地获取数据。允许实现急切地获取指定了lazy strategy提示的数据。”一般来说,作为旁注 LAZY 可能无法保证,具体取决于实现提供程序。hibernate(最流行的jpa实现)将延迟获取 superChildren ,所以 FetchType 的 Parent#children 没关系。我没有尝试过其他实现,但我非常怀疑它是否会有所不同。
FetchType
LAZY
superChildren
Parent#children
1条答案
按热度按时间ijxebb2r1#
没有任何关于
FetchType
意味着与关联实体自身相关的任何行为FetchType
. 甚至注意到LAZY
(这来自jpa规范的文档):“lazy策略是对持久性提供程序运行时的一个提示,即当数据第一次被访问时,应该延迟地获取数据。允许实现急切地获取指定了lazy strategy提示的数据。”
一般来说,作为旁注
LAZY
可能无法保证,具体取决于实现提供程序。hibernate(最流行的jpa实现)将延迟获取
superChildren
,所以FetchType
的Parent#children
没关系。我没有尝试过其他实现,但我非常怀疑它是否会有所不同。