zoukankan      html  css  js  c++  java
  • spring boot + spring data jpa 事务失效

    配置:在service层的具体方法上开启事务:

    
    

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;

    @Service
    public class InventoryServiceImpl implements InventoryService { @Autowired private DemoDao dao; @Override @Transactional public void add(Entity entity){ //TODO
         dao.save(entity);
    }

    事务失效的原因可能有以下三个

    • 异常相关
      • 自己在方法内捕获了异常,但是没有抛出,这时候事务aop捕获不到异常,就不会执行回滚操作了。
        •   解决:捕获处理异常后,再往外抛出
      • 方法抛出了spring事务不处理的异常,spring事务默认只处理RuntimeException Error两种异常
        •   解决:配置rollbackFor,指定事务捕获哪些异常
          @Transactional(rollbackFor = Exception.class)

    • 方法不是public
      •   改呗

    • 数据库表不是 innodb 引擎
      •   如果是jpa自动生成的表,需要配置一下表的默认引擎(在配置文件中配置方言的方式已经被hibernate弃用,官方建议在环境信息或jvm中配置
        •   
              public static void main(String[] args) {
                  //配置jpa生成表的默认引擎为innodb
                  System.setProperty("hibernate.dialect.storage_engine","innodb");
                  SpringApplication.run(NikeDcProcessorApplication.class, args);
              }
  • 相关阅读:
    MySql msi安装
    C# TextBox文本内容选中
    SQL 删除时间最靠前的几条数据
    Layui表格工具栏绑定事件失效问题
    Layui我提交表单时,table.reload(),表格会请求2次,是为什么?按下面的做
    table 中数据行循环滚动
    html 3D反转效果
    网页电子表数字样式
    power tool 强制撤销
    GHOST -ntexact 正常还原
  • 原文地址:https://www.cnblogs.com/malefeng/p/13408950.html
Copyright © 2011-2022 走看看