2009-10-19 61 views
7

我需要一个帮手来知道一个属性是否已被加载,以避免LazyInitializationException。可能吗?有没有帮助知道属性是否已被Hibernate加载?

@Entity 
public class Parent { 
    @OneToMany 
    private List<Child> childList; 
} 

@Entity 
public class Child { 

} 

"select distinct p from Parent p left join fetch p.childList"; 

// Answer goes here 
// I want to avoid LazyInitializationException 
SomeHelper.isLoaded(p.getChildList()); 

回答

13

实际上有两种方法。

要确定是否已初始化惰性属性,可以使用实体实例和属性名称作为参数调用Hibernate.isPropertyInitialized()方法。

要找出是否懒惰集合(或实体)已经(在你的例子一样)被初始化,您可以调用Hibernate.isInitialized()与集合(实体)实例作为参数。

+0

总是你,Chss。谢谢。 – 2009-10-19 17:55:08

相关问题