【发布时间】:2011-07-03 19:40:57
【问题描述】:
在 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); // doesn't work.
this.fooDao.save(bean); // works
}
}
saveWrap() 是调用save() 的常规方法,它是事务性的,但saveWrap() 不会保留任何更改。
我正在使用 Spring 3 和 Hibernate 3。我在这里做错了什么?谢谢。
【问题讨论】: