spring 事务注解 不回滚

2025-04-28 11:32:15
推荐回答(3个)
回答1:

为什么你用了声明式事务管理,还要使用HibernateTemplet

理想的状况是使用Spring注入的sessionFactory

用getCurrentSession()方法来获取Session

事务管理器也是从同一个sessionFactory获取Session

这样才有事务管理的基础(事务管理器和你使用的是同一个Session)

如果你用HibernateTemplet新生成一个Session,那就什么都不会发生。

还有一个前提

假设你这个类是Service,那么这个Service必须是受Spring管理的。

你实际运行的时候,这个类也必须是从Spring获取的或是被注入的。

回答2:

@Transactional 你加了是没有反应的 因为你没有用spring的事务 而是用的hibernat的事务 ,你必须开启hibernate的事务然后关闭,

回答3:

你这完全是顺序执行啊,先跟新role1,sleep15,更新role2。逻辑的问题,这样的方法可行的。