事务回滚的错误NoTransactionException: No transaction aspect-managed TransactionStatus i

Lucas_ccy Lucas_ccy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
Exception in thread "main" org.springframework.transaction.[code=perl]NoTransactionException: No transaction aspect-managed TransactionStatus in scope
at org.springframework.transaction.interceptor.TransactionAspectSupport.currentTransactionStatus(TransactionAspectSupport.java:114)
at com.test.test.text(test.java:51)
at com.test.test.main(test.java:18)

学习ssh时的错误

try{
System.out.println("============保存user============");
dao.save(user);
System.out.println("============保存classify============");
dao2.save(classify);
}catch(Exception e){
System.out.println("=====22222222222222");
// e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//就是这一句了,加上之后,如果doDbStuff2()抛了异常,
System.out.println("--------------");
}


我把classify设置成会抛出错误的。然后抛出RuntimeException;
AOP代码:
@AfterThrowing(throwing="ex",pointcut="execution(* com.dao.*.*(..))")
public void doRecoveyAction(Throwable ex){
System.out.println("===========事务回滚============");
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
System.out.println("===========回滚成功============");
}

但是输出的时候是这样的:
============保存user============
before
============保存classify============
before
=====22222222222222
Exception in thread "main" org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope
at org.springframework.transaction.interceptor.TransactionAspectSupport.currentTransactionStatus(TransactionAspectSupport.java:114)
at com.test.test.text(test.java:51)
at com.test.test.main(test.java:18)

抛出的RuntimeException没有调用到AOP
但是我用个抛出1/0的错误的时候却可以调用到AOP
求大神指导啊
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
Lucas_ccy
Web 开发 81,108 成员 341,721 内容