栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无法提交JPA事务:事务标记为rollbackOnly

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无法提交JPA事务:事务标记为rollbackOnly

我的猜测是它

ServiceUser.method()
本身是事务性的。不应该这样 这就是原因。

调用

ServiceUser.method()
方法时,会发生以下情况:

  1. 事务性拦截器拦截方法调用,并启动一个事务,因为没有事务已处于活动状态
  2. 该方法称为
  3. 该方法调用MyService.doSth()
  4. 事务拦截器拦截方法调用,发现事务已处于活动状态,并且不执行任何操作
  5. doSth()被执行并引发异常
  6. 事务拦截器拦截异常,将事务标记为rollbackOnly,并传播异常
  7. ServiceUser.method()捕获异常并返回
  8. 事务拦截器由于已经启动了事务,因此尝试提交它。但是Hibernate拒绝这样做,因为该事务被标记为rollbackOnly,因此Hibernate引发异常。事务拦截器通过引发包装hibernate异常的异常来将信号通知给调用方。

现在,如果

ServiceUser.method()
不是事务性的,将发生以下情况:

  1. 该方法称为
  2. 该方法调用MyService.doSth()
  3. 事务拦截器拦截方法调用,发现没有事务已经处于活动状态,因此启动了一个事务
  4. doSth()被执行并引发异常
  5. 事务拦截器拦截异常。由于已启动事务,并且已引发异常,因此它将回滚事务并传播异常
  6. ServiceUser.method()捕获异常并返回


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393146.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号