解決方案:在catch中加入TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();手動回滾或者拋出throw new runtimeexcetpion();異常。前者不需要在上層(controller層)做任何處理,后者需要在上層捕獲這個異常。
本文來至:http://blog.csdn.net/yipanbo/article/details/46048413
本文來至:http://blog.csdn.net/yipanbo/article/details/46048413
2017-09-06
默認spring事務只在發生未被捕獲的 runtimeexcetpion時才回滾。spring aop 異常捕獲原理:被攔截的方法需顯式拋出異常,并不能經任何處理,這樣aop代理才能捕獲到方法的異常,才能進行回滾,默認情況下aop只捕獲runtimeexception的異常,但可以通過配置來捕獲特定的異常并回滾,換句話說在service的方法中不使用try catch 或者在catch中最后加上throw new runtimeexcetpion(),這樣程序異常時才能被aop捕獲進而回滾。
2017-09-06
雖然你加了注解 但你必須拋的是RuntimeException 否則你加的注解不起作用 不知道老師你自己做過測試沒有 或者自己寫一個類繼承RuntimeException
2017-08-20