我已經實作了一個類,我需要將一些資料插入資料庫,但如果出現問題,插入必須回滾。一旦我執行了插入,我就會拋出一個例外來測驗回滾,但是一旦我檢查了資料庫,就會插入行,這意味著回滾從未發生過。
import org.springframework.transaction.annotation.Transactional;
public class SomeClass{
@Autowired
private JdbcTemplate jdbcTemplate;
@Transactional
public void insertToDb() throws Exception{
String sql = "INSERT STUFF"
jdbcTemplate.update(sql);
throw new Exception();
}
}
uj5u.com熱心網友回復:
參考檔案 @Transactional:
如果此注解中未配置自定義回滾規則,則事務將在 RuntimeException 和 Error 上回滾,但不會在已檢查例外上回滾。
由于Exception是已檢查例外,默認情況下不會執行回滾。您要么需要拋出 a (或 extends) 的東西,要么在注釋屬性RuntimeException中列出例外:rollbackFor
@Transactional(rollbackFor = Exception.class)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/510517.html
