假设我有一个实体Parent与相关实体Child(可空)具有@OneToMany(fetch = FetchType.LAZY)
关系
在我的action bean中,以下代码是否会初始化子实体?
boolean 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.
,但不确定是否将空检查归类为操作
由于
答案 0 :(得分:3)
不,null
检查不足以可靠地触发延迟加载。您需要执行需要存在实际数据的操作,例如在size()
上调用Collection
或您的子对象的任何getter。
请注意,您需要访问交易中的延迟加载属性。
即使您什么都不做,也无法保证不会加载延迟加载的属性。 FetchType.LAZY
只是对持久性提供程序的一个提示,因此测试延迟加载可能会导致脆弱的测试。