参考: http://blog.youkuaiyun.com/waixin/article/details/6551457
org.springframework.transaction.UnexpectedRollbackException: Transaction has been rolled back because it has been marked as rollback
解决:
1. 在transactionManager中添加 globalRollbackOnParticipationFailure = false, 如下:
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
<property name="globalRollbackOnParticipationFailure" value="false" />
</bean>
2. 去掉子事务的事务拦截, 只让主事务控制提交或回滚, 如下需要去掉对bMethod()的事务拦截
public class AService{
private BService bService;
public aMethod(){
//do something
try{
bService.bMethod();
}catch(Exception e){
log("调用bMethod()抛出异常", e);
}
}
}