第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

@Transactional(propagation = Propagation.REQUIRES_NEW)失效問題

同一個類中,方法調(diào)用 ,即便是加了@Transactional(propagation = Propagation.REQUIRES_NEW),也沒有效果,A方法調(diào)用B方法;A方法出問題,B方法同樣會回滾,老師這個有好的解決法么?

正在回答

5 回答

自事務(wù)調(diào)用失效

0 回復(fù) 有任何疑惑可以回復(fù)我~

用戶1148976的回答是正解,orderService要有g(shù)enerateOrderNo()接口,然后orderServiceImpl實現(xiàn)該接口,然后orderServiceImpl內(nèi)部注入orderService,使用orderService.generateOrderNo()來調(diào)用,用this調(diào)用是無效的

2 回復(fù) 有任何疑惑可以回復(fù)我~
#1

少年啊c

老師這個是錯的?
2019-08-03 回復(fù) 有任何疑惑可以回復(fù)我~
#2

慕粉1471311418 回復(fù) 少年啊c

可能是
2020-04-10 回復(fù) 有任何疑惑可以回復(fù)我~

要使得@Transactional生效,必須通過JDK動態(tài)代理或者CGLIB來調(diào)用B方法,而不能直接在A方法中調(diào)用B方法,

這里可以在OrderServiceImpl中注入自身:

@Autowired
private?OrderService?orderService;

在createOrder()方法中這樣調(diào)用:

orderModel.setId(orderService.generateOrderNo());

當(dāng)然,generateOrderNo()方法要改成public,OrderService接口中也要申明下generateOrderNo()方法。

5 回復(fù) 有任何疑惑可以回復(fù)我~

不管怎么樣,應(yīng)該不是a、b方法不能在同一類中的原因,可能是因為調(diào)用代理對象的不同導(dǎo)致的新的(b方法的)事務(wù)未開啟,

0 回復(fù) 有任何疑惑可以回復(fù)我~

把被標(biāo)注的方法前的private修飾符去掉試試

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉13146578634 提問者

我試了,也不行呢,我把B方法單獨寫到另一個類里面,通過注入B方法所在的類,然后在A方法中調(diào)用B方法,就可以了。也就是說,要使@Transactional(propagation = Propagation.REQUIRES_NEW)有效,A和B方法,最好不要在同一個類中?
2019-01-17 回復(fù) 有任何疑惑可以回復(fù)我~
#2

dusty_z 回復(fù) 慕粉13146578634 提問者

你看看你的類上是不是加了@Transactional,如果是的話,去掉。應(yīng)該是在a方法上添加@Transactional,b方法上添加@Transactional(propagation = Propagation.REQUIRES_NEW)
2019-01-17 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

@Transactional(propagation = Propagation.REQUIRES_NEW)失效問題

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號