有关事务不起作用的原因---尤其是加了@Transactional 注解还不起作用
MongoDb 本身没有事务功能。一般不用做金融,涉及钱之类的业务。
So,一般涉及事务是用都是用的其他数据库。
一般事务不起作用有三个方面原因:
1,忘了在实现业务层中忘了添加,如图的:
@Transactional 注解 !
2,把错误给抛出去了,添加事务控制相当于没有添加。如图:错误的写法
在添加了@Transactional 注解后,事务控制不住是因为 try{…}catch(Excetion e){…} 中用了Exception
捕获异常!为什么不能用它呢?因为如图:
Exception捕获的异常直接抛出去了 从而没有回滚!
而正确的做法是:
应该采用BeansException .原因是:如图:
BeansException 最终继承的是RuntimeException 它是不会被抛出外面 所以用到事务的地方可以回滚!
3.再有问题就是你的代码写错了。哈哈