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