zoukankan      html  css  js  c++  java
  • org.springframework.dao.CannotAcquireLockException解决

    java.sql.SQLException: Lock wait timeout exceeded

    该异常为一个service中调用了另一个service,两个service对同一表进行操作,造成事务嵌套,从而死锁。

    解决办法:在当前方法前加入@Transactional(propagation=Propagation.SUPPORTS)

    @Transactional(propagation=Propagation.REQUIRED) 
        // 容器不为这个方法开启事务
        @Transactional(propagation=Propagation.NOT_SUPPORTED)
        // 不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
        @Transactional(propagation=Propagation.REQUIRES_NEW) 
        // 必须在一个已有的事务中执行,否则抛出异常
        @Transactional(propagation=Propagation.MANDATORY)
        // 必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
        @Transactional(propagation=Propagation.NEVER) 
        // 如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.
        @Transactional(propagation=Propagation.SUPPORTS) 
    

      

  • 相关阅读:
    复利完结观看评价
    汉堡计划
    0406 复利计算完结篇
    构建之法 第四章 读后感
    复利计算单元测试
    实验一 cmd命令的编写
    构建之法 前三章读后感
    复利计算完成总结
    复利计算软件v3
    实验 0 了解和熟悉操作系统
  • 原文地址:https://www.cnblogs.com/zqyanywn/p/8392349.html
Copyright © 2011-2022 走看看