懒惰地尝试获取数据时出现异常(最后出现异常)
//应用程序通过以下DAO获取数据。
public T findById(PK id) {
T result = getHibernateTemplate().get(this.type, id);
getHibernateTemplate().flush();
return result;
}
//Junit 测试调用一个 serviceX.getById
@Transactional
public SomeObject getById(int x){
return (SomeObject) aboveDao.findById(x);
}
//使用JUnit
SomeObject someObj = serviceX.getById(3);
someObj.getAnotherObject().y.equals("3"); //**Exception** at this line.
//SomeObject 类具有以下属性。
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
private AnotherObject anotherObject;
尝试访问junit中的anotherObject时出现以下异常
已经尝试过的方法+额外的配置
我们使用spring注解TransactionManager。<tx:annotation-driven /> 在配置文件中指定。
另外,我尝试在 JUnit 之上添加 @Transaction(propagation = Propagation.REQUIRED) ,但这并没有解决问题。如果我运行该应用程序,它可以正常工作。
如何为 JUnit 解决此类问题?
org.hibernate.LazyInitializationException: failed to lazily initialize
a collection of role xxxxx , no session or session was closed