Stu*_*ame 2 java postgresql transactions jdbc spring-boot
我已经实现了一个类,我需要将一些数据插入数据库,但如果出现问题,插入必须回滚。一旦我执行了插入,我就会抛出一个异常来测试回滚,但是一旦我检查数据库,行就会被插入,这意味着回滚从未发生。
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();
}
}
Run Code Online (Sandbox Code Playgroud)
参考文档 @Transactional:
如果在此注释中未配置自定义回滚规则,则事务将在 RuntimeException 和 Error 时回滚,但不会在已检查的异常上回滚。
由于Exception是检查异常,所以默认不会执行回滚。您需要抛出 a (或扩展)的内容RuntimeException,或者在注释属性中列出异常rollbackFor:
@Transactional(rollbackFor = Exception.class)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
633 次 |
| 最近记录: |