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");