没遇到过这种问题,一般我们都是在service层加事务,一般service层调用本层的只有私有方法。楼主说的这种情况真心没遇到过。

解决方案 »

  1.   

    spring 是声明式事务,通常是对一个方法产生代理;所以一般来说只要有事务特性的方法被调用就会启动事务,按这么说的话应该会产生两个事务吧。
      

  2.   

    主要看事物的默认隔离机制是什么。比如数据库是oracle的话,在这里事物就是一个。
      

  3.   

    是spring的事务传播特性。
    http://blog.sina.com.cn/s/blog_4b5bc0110100z7jr.html
      

  4.   

    这个要看事务定义的传播行为是什么,如果是如下这个
    1: PROPAGATION_REQUIRED加入当前正要执行的事务不在另外一个事务里,那么就起一个新的事务比如说,ServiceB.methodB的事务级别定义为 PROPAGATION_REQUIRED, 那么由于执行ServiceA.methodA的时候,ServiceA.methodA已经起了事务,这时调用 ServiceB.methodB,ServiceB.methodB看到自己已经运行在ServiceA.methodA的事务内部,就不再起新的事务。而假如ServiceA.methodA运行的时候发现自己没有在事务中,他就会为自己分配一个事务。这样,在ServiceA.methodA或者在ServiceB.methodB内的任何地方出现异常,事务都会被回滚。即使ServiceB.methodB的事务已经被提交,但是ServiceA.methodA在接下来fail要回滚,ServiceB.methodB也要回滚具体其他细节请参考这篇博文,希望对您有帮助!
    http://blog.csdn.net/it_man/article/details/5074371
      

  5.   

    spring有事务管理,方法A中调用方法B 事务如何处理可以通过spring进行管理,即可以让A和B共用一个事务,也可以走单独的事务,默认的应该是共用一个事务,记不太清楚了,楼主可以查找下