2

假设我有一个实体 Parent 与一个相关实体 Child(可为空)与一个@OneToMany(fetch = FetchType.LAZY)关系

在我的操作 bean 中,以下代码会初始化子实体吗?

布尔 hasChild = false;

if(parent.getChild()!=null){
    hasChild = true;
}

我在文档中看到它说Lazy collection fetching: a collection is fetched when the application invokes an operation upon that collection. This is the default for collections.但不确定是否将空检查归类为操作

谢谢

4

1 回答 1

4

不,null检查不足以可靠地触发延迟加载。您需要执行需要存在实际数据的操作,例如调用子对象size()的一个Collection​​或任何 getter。

请注意,您需要在事务中访问延迟加载的属性。

即使您什么都不做,也不能保证不会加载延迟加载的属性。FetchType.LAZY只是对持久性提供者的提示,因此延迟加载测试可能会导致测试脆弱。

于 2013-04-04T10:55:19.650 回答