@Transactional(rollbackFor=Exception.class,readOnly=false) public void generateReport(String year,String month){ widthWatchMapper.deleteBigWidthWatch(year+month); int i=1/0;} 这段代码事务为啥不回回滚
时间: 2024-04-29 19:21:55 浏览: 18
这段代码中的事务不会回滚是因为在方法上使用了 `readOnly=false` 的属性,它表示该方法具有写操作,而不是只读操作。在 Spring 中,只有在抛出未捕获的 RuntimeException 或 Error 时,事务才会回滚。在这段代码中,虽然发生了 `1/0` 的异常,但是它被 try-catch 语句块捕获了,因此事务没有被回滚。如果想让事务回滚,则需要让异常抛出去,或者在 try-catch 语句块中手动抛出 RuntimeException 或 Error。同时,也可以将 `readOnly` 属性设置为 true,让该方法成为只读方法,这样即使发生了异常,事务也不会回滚。
相关问题
@Transactional(rollbackFor = Exception.class)与@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)的区别
@Transactional注解用于声明事务,在Spring中常用来保证方法的执行在一个事务内部,以确保数据的一致性和完整性。其中,rollbackFor参数指定哪些异常需要回滚事务,Propagation.REQUIRED指定了方法的事务传播行为。
区别如下:
- @Transactional(rollbackFor = Exception.class):这个注解只指定了回滚的异常类型,而没有指定传播行为,默认传播行为是Propagation.REQUIRED。
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class):这个注解指定了方法的事务传播行为和回滚的异常类型。
简单来说,前者只指定了回滚异常类型,而后者不仅指定了回滚异常类型,还明确指定了事务的传播行为。
@Override @Transactional(isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class)
在Spring项目中,使用`@Transactional`注解可以为方法添加事务支持。其中,`isolation`参数用于指定事务的隔离级别,`rollbackFor`参数用于指定需要回滚的异常类型。
对于`@Transactional(isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class)`这个注解,它的作用是将方法设置为使用读已提交的隔离级别,并且在遇到任何异常时都进行回滚。
隔离级别`READ_COMMITTED`表示一个事务只能读取到已经提交的数据,避免了脏读。而`rollbackFor = Exception.class`表示遇到任何异常都会触发事务回滚。
需要注意的是,Spring的事务隔离级别和数据库的事务隔离级别是有关联的。当Spring项目中使用了`@Transactional`注解指定了隔离级别时,会优先使用Spring的隔离级别,而不是数据库的隔离级别。因此,如果两者不一样,以Spring的隔离级别为准。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)