慕前端9553269
2018-06-12 20:29:42
Spring boot 中@Transactional注解,沒(méi)有進(jìn)行有效回滾代碼如下package?com.imooc;
import?org.springframework.beans.factory.annotation.Autowired;
import?org.springframework.stereotype.Service;
import?org.springframework.transaction.annotation.Transactional;
import?java.beans.Expression;
@Service
public?class?GirlService?{
????@Autowired
????private?GirlRepository?girlRepository;
????@Transactional
????public?void?insertTwo(){
????????Girl?girlA=new?Girl();
????????girlA.setCapSize("A");
????????girlA.setAge(28);
????????girlRepository.save(girlA);
????????Girl?girlB=new?Girl();
????????girlB.setCapSize("BGG");
????????girlB.setAge(28);
????????girlRepository.save(girlB);
????}
}檢查過(guò)MySQL的引擎是InnoDB ,支持事務(wù)。其中數(shù)據(jù)庫(kù)表Girl的capSize字段長(zhǎng)度為1 ,這樣第二筆插入會(huì)報(bào)錯(cuò),應(yīng)該回滾第一筆插入也取消。但是實(shí)際執(zhí)行結(jié)果是girlA仍然插入成功了。為什么會(huì)這樣?。壳蠼?
3 回答


慕前端9553269
TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
非常感謝。還是我粗心了。原來(lái)JPA自動(dòng)創(chuàng)建的表的引擎默認(rèn)是MyISAM。修改成InnoDB 就正常回滾了
添加回答
舉報(bào)
0/150
提交
取消