我有这个测试类:
class Test1{
@Autowire
Test2 t2;
public void test(){
t2.method();
}
}
class Test2{
@Transaction
public void method(){
Entity e=get(Entity.class,1);
submethod(e);
}
protected void submethod(Entity e){
e.getLazyField(); //this throws a LazyInitializationException
}
}
为什么Test2.submethod()由于没有会话而抛出LazyInit错误,如果它被@Transaction方法调用?我还尝试将“@Transaction”添加到submethod()但它再次失败。
我找到的唯一解决方案是在Test1.test()方法上设置@Transaction。但我不明白为什么。
这是spring的transactionManager。
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>