如何在Hibernate中初始化子对象?
我正在尝试运行以下代码:如何在Hibernate中初始化子对象?,hibernate,Hibernate,我正在尝试运行以下代码: Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.beginTransaction(); Hibernate.initialize(fooA); Hibernate.initialize(fooA.getfooB()); <--- org.hibernate.LazyInitializationException: could n
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Hibernate.initialize(fooA);
Hibernate.initialize(fooA.getfooB()); <--- org.hibernate.LazyInitializationException: could not initialize proxy - no Session
tx.commit();
session.close();
Hibernate.initialize(对象)是否关闭当前会话?Hibernate.initialize(…)不会关闭当前会话。在上面的代码片段中,您正在创建一个会话,然后对一个与该会话不关联的对象(fooA)调用initialize
您可以使用session.refresh(fooA)将fooA重新连接到会话代码>呼叫。重新附加对象后,对初始化的第二次调用应按预期进行
如果您发现自己经常需要像这样初始化代理,这可能表明由于(n-1)select问题,懒散初始化是不可取的。值得深思
public class Foo{
private String name;
private FooA fooA;
}
public class FooA{
private String name;
private FooB fooB;
}
public class FooB{
private String name;
}