假设我有一个实体 Parent 和一个相关实体 Child(可为 null),并且具有 @OneToMany(fetch = FetchType.LAZY)
关系
在我的操作 bean 中,以下代码会初始化子实体吗?
bool 值hasChild = false;
if(parent.getChild()!=null){
hasChild = true;
}
我在文档中看到它说延迟集合获取:当应用程序对该集合调用操作时,会获取该集合。这是集合的默认设置。
但不确定空检查是否被归类为操作
谢谢
最佳答案
不,null
检查不足以可靠地触发延迟加载。您需要执行需要存在实际数据的操作,例如在 Collection
或子对象的任何 getter 上调用 size()
。
请注意,您需要访问事务内的延迟加载属性。
即使您什么都不做,也不能保证延迟加载的属性不会被加载。 FetchType.LAZY
只是对持久性提供程序的提示,因此延迟加载测试可能会导致脆弱的测试。
关于Hibernate 是否会进行 null 检查来初始化惰性实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15809082/