Json 如何使用JTA使用Jax-RS发布对象数组?

Json 如何使用JTA使用Jax-RS发布对象数组?,json,rest,jpa,jax-rs,jta,Json,Rest,Jpa,Jax Rs,Jta,我有一个jax-rsrest服务,它发布一个 ArrayList 对象到服务器 在服务器上,我循环浏览每本书,将其转换为BookEntity(我使用JPA),然后保存每本书 如果任何BookEntity未能持久化,我希望整个POST操作失败,并且提交的ArrayList中没有任何Book Entity被持久化。我想回滚整个操作,这样它要么全是,要么什么都不是 仅仅使用容器管理的事务(我知道您只需注入实体管理器就可以免费获得这些事务)就可以做到这一点吗?还是我需要JTA来做这件事?我有点困惑,事务

我有一个jax-rsrest服务,它发布一个

ArrayList

对象到服务器

在服务器上,我循环浏览每本书,将其转换为BookEntity(我使用JPA),然后保存每本书

如果任何BookEntity未能持久化,我希望整个POST操作失败,并且提交的ArrayList中没有任何Book Entity被持久化。我想回滚整个操作,这样它要么全是,要么什么都不是

仅仅使用容器管理的事务(我知道您只需注入实体管理器就可以免费获得这些事务)就可以做到这一点吗?还是我需要JTA来做这件事?我有点困惑,事务管理的哪一部分是自动完成的


谢谢大家!

仅仅注入实体管理器并不能提供容器管理的事务。以下是为服务启用CMT的先决条件:

  • 服务必须是EJB(@Stateless、@Stateful、@MessageDriven)
  • 服务必须定义。这是默认值,因此,可以省略整个注释
  • 服务必须为其JPA操作使用JTA实体管理器
  • 如果满足所有先决条件,那么对于服务上的任何给定业务方法,容器将自动管理其事务。通过使用注释,可以逐个方法对事务行为进行微调,但默认情况下,对于每个方法:

    • 如果不存在事务,则启动一个事务
    • 方法完成后,提交事务
    • 如果方法引发异常,则回滚事务