加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 播放2.2.2 @Transactional的eBean不会在Exception抛出

发布时间:2020-12-16 18:16:27 所属栏目:安全 来源:网络整理
导读:似乎在将Play Framework 2.2.2与eBean ORM一起使用时,@ play.db.ebean.Transactional 抛出异常时不回滚事务. 你们中的某些人是否对这个问题有所了解以及如何解决这个问题? 我看到eBean在他们的avaje-ebeanorm-agent 3.2.2中有关于该问题的BUG. :https://gi
似乎在将Play Framework 2.2.2与eBean ORM一起使用时,@ play.db.ebean.Transactional
抛出异常时不回滚事务.

你们中的某些人是否对这个问题有所了解以及如何解决这个问题?

我看到eBean在他们的avaje-ebeanorm-agent 3.2.2中有关于该问题的BUG. :https://github.com/ebean-orm/avaje-ebeanorm/pull/44在版本avaje-ebeanorm 3.2.3中修复
同样玩2.2.2似乎使用avaje-ebeanorm-agent 3.2.2并且当我将其更改为更高版本时
Built.scala(3.2.5)出现了一些使用了JPA注释的崩溃(像orphanRemoval一样无法识别)

附:与Play 2.1.1,play 2.1.1: Unable to rollback transaction with ebean orm有类似的讨论,但没有明确解决在Action中使用@Transactional的问题.

解决方法

我遇到了类似的问题,但是我只测试了游戏版本2.3.7:

我注意到有两个不同的库包含Transactional-annotation:@ com.avaje.ebean.annotation.Transactional和@ play.db.ebean.Transactional.

显然,它们中的每一个只能在某种类型的类中工作,如果使用错误,则不会执行回滚.这是我通过测试发现的:

> @ com.avaje.ebean.annotation.Transactional:
仅适用于表示模型的类中的方法,即它们具有@ javax.persistence.Entity注释.然而,在ebean增强中似乎存在一个错误,导致类到always recompile although no changes were made
> ebean’s documentation提供了另外两种实现交易的方式,例如:你可以使用try / finally块.在我的测试中,这种方式一直运行良好,并且执行了回滚.
> @ play.db.ebean.Transactional:仅适用于操作,即该类派生自play.mvc.Controller.我不确定这种行为是否有意,但documentation of play-framework只讨论了事务性操作,并没有提到模型类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读