2010-07-30 75 views
1

如果我有交易方法A,B,C和A调用B,C;那么,C抛出的异常不会被A捕获。关于弹簧嵌套事务的简短问题

我的问题是如果B会回滚或不回滚?

请注意,默认情况下,嵌套事务处于禁用状态,因此A,B,C都可以自行处理。

谢谢

+0

问题很混乱,尝试更明确。实际的示例代码会有帮助。 – skaffman 2010-07-30 11:38:54

回答

2

请注意,Spring默认情况下只在事务边界之外抛出RuntimeException(或子类)时(即异常未被事务方法捕获)时回滚事务。

除非您明确指定,否则检查的异常不会导致Spring将事务标记为回滚。

0

是的。

如果A,B和C都是@Transactional方法,并且A调用B和C,Spring将使用单个事务来管理所有三个事务的事务性质。换句话说,A,B和C的调用实际上将共享单个事务。如果C引发异常,A,B和C使用的单个事务将被回滚。