@Transactional方法被另一个方法调用时,无法获取事务。
@Transactional方法被另一个方法调用时,无法获取事务。
在Spring中,使用@Transactional
注解的方法会在没有事务的情况下创建一个新的事务,但我注意到,如果一个非事务性方法调用了一个带有事务性的方法,那么事务性方法将不会获取任何事务。以下是代码示例:
@Component public class FooDao { private EntityManager entityManager; @PersistenceContext protected void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } @Transactional public Object save(Object bean) { return this.entityManager.merge(bean); } public Object saveWrap(Object bean) { return save(bean); } } @Component public class FooService { private FooDao fooDao; public void save(Object bean) { this.fooDao.saveWrap(bean); // 不起作用 this.fooDao.save(bean); // 起作用 } }
saveWrap()
是一个普通方法,调用了一个带有事务性的save()
方法,但saveWrap()
不会持久化任何更改。
我使用的是Spring 3和Hibernate 3。我在这里做错了什么?谢谢。