当前位置:   article > 正文

org.springframework.dao.CannotAcquireLockException解决

org.sringframework.dao.cannotacquirelockexception

java.sql.SQLException: Lock wait timeout exceeded

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

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

 

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

  

转载于:https://www.cnblogs.com/zqyanywn/p/8392349.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/729315
推荐阅读
相关标签
  

闽ICP备14008679号