@Transactional(propagation = Propagation.REQUIRES_NEW)失效問題
同一個類中,方法調用 ,即便是加了@Transactional(propagation = Propagation.REQUIRES_NEW),也沒有效果,A方法調用B方法;A方法出問題,B方法同樣會回滾,老師這個有好的解決辦法么?
同一個類中,方法調用 ,即便是加了@Transactional(propagation = Propagation.REQUIRES_NEW),也沒有效果,A方法調用B方法;A方法出問題,B方法同樣會回滾,老師這個有好的解決辦法么?
2019-01-16
舉報
2023-02-14
自事務調用失效
2019-07-02
用戶1148976的回答是正解,orderService要有generateOrderNo()接口,然后orderServiceImpl實現該接口,然后orderServiceImpl內部注入orderService,使用orderService.generateOrderNo()來調用,用this調用是無效的
2019-06-29
要使得@Transactional生效,必須通過JDK動態代理或者CGLIB來調用B方法,而不能直接在A方法中調用B方法,
這里可以在OrderServiceImpl中注入自身:
在createOrder()方法中這樣調用:
當然,generateOrderNo()方法要改成public,OrderService接口中也要申明下generateOrderNo()方法。
2019-01-17
不管怎么樣,應該不是a、b方法不能在同一類中的原因,可能是因為調用代理對象的不同導致的新的(b方法的)事務未開啟,
2019-01-16
把被標注的方法前的private修飾符去掉試試