Hibernate @Transactionin嵌套方法

时间:2014-01-16 10:37:23

标签: hibernate transactions

我有这个测试类:

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>

0 个答案:

没有答案