readOnly=true表明所注解的方法或类只是读取数据。
readOnly=false表明所注解的方法或类是增加,删除,修改数据。
通常添加事务回滚注解都是在service层中,可以在类上,也可以在方法上:
注意点:

  1. service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务管理,在每个业务方法执行时都会开启一个事务,不过这些事务采用相同的管理方式。

  2. @Transactional 注解只能应用到 public 可见度的方法上。 如果应用在protected、private或者 package可见度的方法上,也不会报错,不过事务设置不会起作用。

  3. 默认情况下,spring会对unchecked异常进行事务回滚;如果是checked异常则不回滚。
    辣么什么是checked异常,什么是unchecked异常?

java里面将派生于Error或者RuntimeException(比如空指针,1/0)的异常称为unchecked异常,
其他继承自java.lang.Exception得异常统称为Checked Exception,如IOException、TimeoutException等

代码中事务不回滚常见错误:
有时候我们即使在service层中加了,但是还是没有实现回滚,
注意:如果在service 方法上添加了注解,方法的上一层controller一定要try catch捕获异常,

或者在当前try catch中添加
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

例如:

@Transactional(readOnly = false) public boolean updatesetZszj(Ze54 ze54,Ze54 ze54own) throws Exception  {if (dao.updateset(ze54)>0){//设置卷宗号ze54own.setBze543(ze54.getBze543());//请求xml组装String dataXmlString=this.getXmlData(ze54own);//调用大唐组卷接口String resultxml = WebServiceClient.execute(dataXmlString, "archive", "admin");//为空时手动抛出异常,使更新回滚if(resultxml==null){throw  new RuntimeException("调用大唐组卷接口异常");}Map<String, Object> map = WebServiceClient.xml2Map(resultxml);Map<String, Object> map2=(Map<String, Object>)map.get("Success");String res=  map2.get("Code").toString();if(res.equals("true")){logger.info("组卷成功");return true;}else{logger.error("组卷失败,调用大唐组卷接口失败");return false;}}else{return false;}}

我这里是一个update方法,在update中 同时调用接口,当接口调用失败时,我返回一个null值,然后手动抛出RuntimeException 异常,注意这里一定要是RuntimeException,如果直接是Exception则不回滚,然后在上层的controller调用这个方法时,注意try catch就可以了。

例: 这里是一段更新方法,更新时同时记录日志表,直接在try catch 方法中添加 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
手动回滚,controller层中直接调用就可以。

  @Transactional(rollbackFor = Exception.class)public Boolean removeDlrList(@Param("ids") Integer[] ids,@Param("secDepartmentId")Integer secDepartmentId,@Param("logDo")LocLogDo logDo){try {if( userDao.removeDlrList(ids,secDepartmentId)>0) {//操作日志return   logDao.insert(logDo)>0;}else{return false;}} catch (Exception e) {TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();log.error("批量移动用户异常",e);return false;}}

关于@Transactional(readonly = false)注解不起作用的可能性相关推荐

  1. 关于@Transactional(readOnly = false)注解,数据新增修改Connection is read-only

    关于@Transactional(readOnly = false)注解,数据新增修改Connection is read-only 有时你新增或修改会报Connection is read-only ...

  2. Connection is read-only @Transactional(readOnly = false)不管用

    今天改代码遇到一个问题,项目是老项目,这个功能又是新加上的.上一个人写业务直接在控制层写的.但是现在到我接手,刚好最近客户在用出现了问题.修改数据的时候数据乱了.以前这个功能是没有事务的,我一看就觉得 ...

  3. spring 事务管理之只读事务@Transactional(readOnly = true)

    我们可以使用 @Transactional(readOnly = true) 来设置只读事务 在将事务设置成只读后,当前只读事务就不能进行写的操作,否则报错.如下 Cause: java.sql.SQ ...

  4. SpringMVC当中的 @Transactional(readOnly = true) 的作用

    2019独角兽企业重金招聘Python工程师标准>>> readOnly=true表明所注解的方法或类只是读取数据. readOnly=false表明所注解的方法或类是增加,删除,修 ...

  5. 说说@Transactional(readOnly = true),和mysql事务隔离级别;

    1.首先说说注解@Transactional(readOnly = true) (1)这里使用readOnly=true后,直观会给我们的体现就是,在该事务中,我们只能做查询,不能做更改等操作,否则报 ...

  6. 带你理解 只读事务(@Transactional(readOnly = true)

    概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据) 应用场合: 如果你一次执行单条查询语句,则没有必 ...

  7. Autowired注解起什么作用呢?

    转自: Autowired注解起什么作用呢? 下文笔者将讲述Autowired注解的功能简介说明,如下所示: Autowired注解的功能:用于依赖注入,最常见的是属性注入,构造函数的参数注入 下文笔 ...

  8. @Transactional(readOnly = true)

    概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据)   应用场合: 如果你一次执行单条查询语句,则没 ...

  9. spring事务@Transactional(readOnly = true)及隔离级别实验

    先写结论: 第一:@Transactional(readOnly = true) 1.那么方法里面,必须是读的操作,当有写的操作的时候会报错提示. 2.读到的数据,从进入方法开始,以后即使其他客户端修 ...

最新文章

  1. 简介nandflash、norflash、ram、sram、dram、rom、eeprom、flash的区别
  2. [导入]深入了解OpenOffice.org(二){作者:路广}
  3. Apache HBase的现状和发展
  4. 解决不同浏览器的css兼容问题
  5. php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决
  6. leetcode1111. 有效括号的嵌套深度(栈)
  7. Python入门基础--雨敲窗视频系列
  8. 第46屆ICPC 東亞洲區域賽(澳門)(正式賽)Link-Cut Tree
  9. php代码编写直接插入排序算法,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析...
  10. springBoot集成多数据源mybatisPlus(自动切换数据源)
  11. python软件下载对电脑配置要求-python3批量统计用户电脑配置
  12. docfx daylybuild
  13. 牛客网——程序员代码面试指南(更新ing)
  14. sendkeys安装包_利用Windows命令行解压zip压缩文件(不借助第三方软件)
  15. 伍德里奇计量经济学第五版第四章计算机操作,伍德里奇计量经济学第四章
  16. EI/scopus推荐-智能交通与智慧城市会议
  17. 用计算机画统计图,统计图
  18. JavaScript:实现multiplesThreeAndFive三或五倍数的算法 (附完整源码)
  19. 电商交易规律、RFM分类
  20. 大学计算机基础教育改革,谈计算机等级考试引导大学计算机基础教育改革.pdf...

热门文章

  1. nfs挂载报错mount.nfs: Stale file handle解决(失效文件句柄)
  2. 如何利用showdoc自动生成API文档
  3. ie历史记录值不能触发onchange事件
  4. CAS操作是怎么实现的
  5. Docker集群管理(DockerHub Harbor 打包-Jib 任务编排工具- docker-compose和Swarm)
  6. 转载:uIP之ARP:地址解析协议
  7. .bat和.sh命令一条命令分行写
  8. 一天一个产品分析之印象笔记_米米米米粒口红_新浪博客
  9. MySQL同一个表中批量刷数据
  10. 怎样用命令行方式添加打印机端口? (已解决)