Java 是否有助手可以知道Hibernate是否已加载属性?

Java 是否有助手可以知道Hibernate是否已加载属性?,java,hibernate,lazy-loading,helper,Java,Hibernate,Lazy Loading,Helper,我需要一个助手来知道是否加载了属性,以避免LazyInitializationException。可能吗 @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 g

我需要一个助手来知道是否加载了属性,以避免
LazyInitializationException
。可能吗

@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());
@实体
公共类父类{
@独身癖
私人名单儿童名单;
}
@实体
公营儿童{
}
“从父p左连接获取p.childList中选择不同的p”;
//答案就在这里
//我想避免懒散的初始化异常
SomeHelper.isLoaded(p.getChildList());

实际上,有两种方法

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

要了解惰性集合(或实体)是否已初始化(如示例中所示),可以使用集合(实体)实例作为参数进行调用。

根据适用于Hibernate 5.4的

HibernateAPI

boolean personInitialized = Hibernate.isInitialized(person);

boolean personBooksInitialized = Hibernate.isInitialized(person.getBooks());

boolean personNameInitialized = Hibernate.isPropertyInitialized(person, "name");
JPA

在JPA中,有另一种方法可以使用 遵循javax.persistence.PersistenceUtil模式 尽可能推荐)

PersistenceUtil persistenceUnitUtil = Persistence.getPersistenceUtil();

boolean personInitialized = persistenceUnitUtil.isLoaded(person);

boolean personBooksInitialized = persistenceUnitUtil.isLoaded(person.getBooks());

boolean personNameInitialized = persistenceUnitUtil.isLoaded(person, "name");