Hibernate延迟加载的怪问题
写了一个映射文件,里面有一个一对多的集合。
在service调用dao方法如下:
try {
Vendor vendor=vendorDao.get(HibernateSessionFactory.currentSession(), id);
//Hibernate.initialize(vendor);
return vendor;
} catch (Exception e) {
// TODO: handle exception
throw new ServiceException("自定义异常 " + e);
} finally {
HibernateSessionFactory.closeSession();
}
然后写了一个测试方法调用service类中此方法。
系统抛出了异常:
[eMarket] ERROR 2008-12-05 15:25:44,203 could not initialize proxy - the owning Session was closed | org.hibernate.LazyInitializationException.<init>(19)
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:53)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:84)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
问题就是,我在测试方法中只是print了这个类中的基本信息,并没有访问关联类的信息,但是仍然抛出了session关闭的异常。
而且我将hbm中一对多映射注释后,仍然会抛出异常。
调用Hibernate.initialize(vendor);强制初始化后,程序正常执行。
hbm class级别显示设置laze="false"后,程序也能正常执行。但是类级别(非关联类)的lazy默认不就是false的吗。