Hibernate执行null检查初始化延迟实体?

时间:2013-04-04 10:50:03

标签: hibernate jpa

假设我有一个实体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.,但不确定是否将空检查归类为操作

由于

1 个答案:

答案 0 :(得分:3)

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

请注意,您需要访问交易中的延迟加载属性。

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