Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 在托管事务中激活自动提交_Jpa_Eclipselink_Playframework 2.2 - Fatal编程技术网

Jpa 在托管事务中激活自动提交

Jpa 在托管事务中激活自动提交,jpa,eclipselink,playframework-2.2,Jpa,Eclipselink,Playframework 2.2,在具有托管上下文(Play!、Eclipselink)的应用程序中,我确实有一个使用JPA.withTransaction的方法,但不能执行回滚。它具有外部通信、XML编组和解编等功能,因此可能会发生不同的异常 JPA.withTransaction的正常行为是在(大多数)异常上回滚当前事务 如果在触摸外部资源后引发此类异常,则数据库必须保持当前步骤,以便在之后启用继续/清理 我没有找到实现自动提交或禁用回滚的方法。我已经读到,仅仅捕获异常不会起作用,因为事务已经标记为回滚 那么,禁用回滚并尽快

在具有托管上下文(Play!、Eclipselink)的应用程序中,我确实有一个使用JPA.withTransaction的方法,但不能执行回滚。它具有外部通信、XML编组和解编等功能,因此可能会发生不同的异常

JPA.withTransaction的正常行为是在(大多数)异常上回滚当前事务

如果在触摸外部资源后引发此类异常,则数据库必须保持当前步骤,以便在之后启用继续/清理

我没有找到实现自动提交或禁用回滚的方法。我已经读到,仅仅捕获异常不会起作用,因为事务已经标记为回滚

那么,禁用回滚并尽快提交每个查询的正确方法是什么呢?我不想干扰应用程序的其余部分,因此我会避免

JPA.em().getTransaction().commit();
JPA.em().getTransaction().begin();
每次写信之后


哪种方式可以简单地保存写入的数据?

JPA可能不是您的最佳解决方案,因为它意味着一次保存对多个对象的更改。当出现异常时,没有真正的方法来判断上下文中哪些被推送到数据库中,哪些没有,这就是规范强制提供程序回滚并让应用程序重试事务的原因。您可能希望将数据库事务与其他进程隔离开来,以便它们可以独立使用和回滚,从而允许您在新事务中重试数据库操作,而不会影响整个进程。啊。谢谢真遗憾。这是我与JPA的第二个小项目,也是我发现的第二个恼人的限制:-(由于JPA不允许访问JDBC连接,因此我必须将所有内容存储在电子邮件中以防出现异常。您可以通过unwrap API访问连接