gpt4 book ai didi

java - JPA嵌套事务在运行时异常后全部提交/回滚

转载 作者:行者123 更新时间:2023-12-02 10:23:14 27 4
gpt4 key购买 nike

经过一段时间的阅读和测试不同形式的加载EntityManager实例和bean以进行一些嵌套事务,最后我没有找到一种方法,在运行时异常之后,数据进行完全回滚,必须接近阶段到什么我想要的是只有一个实体保留在数据库上。情况如下:我有一个类实体 Car 和一个类实体 CarPart,Car 的一个实例可以包含 CarPart 列表,我测试了持久性,并且当没有运行时错误发生时,一切都像魅力一样。问题是当抛出运行时错误时,例如数据库触发错误 Controller ,有时对象会部分保留。我将 JPA 与 JavaEE 和 EclipseLink 结合使用。我需要一种方法来控制对象完全持久化或回滚每个持久化操作。任何帮助将不胜感激。

最佳答案

JPA 中不支持嵌套事务,也没有已知的“正确”执行该事务的方法。数据库数据的任何部分回滚也需要对象状态的部分回滚,这通常是发生异常后唯一明智的做法,就是扔掉 EntityManager 和关联的对象。

如果您使用 JavaEE 并将整个“用零件创建汽车”包含在单个事务中,则此行为应该开箱即用。如果您使用单独的事务(正如我之前所说:没有办法让它们嵌套),那么汽车可能会被持久化,而零件则不会。

显而易见的解决方案是对两者仅使用单个容器管理的事务。

关于java - JPA嵌套事务在运行时异常后全部提交/回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54180622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com