Java JPA交易跨越了几次回发

Java JPA交易跨越了几次回发,java,jakarta-ee,jpa,orm,transactions,Java,Jakarta Ee,Jpa,Orm,Transactions,我需要创建一个简单的JEE应用程序,它可以有两种模式。首先,它会自动将每次修改存储到数据库中,其次,所有更改都会按需存储。当用户单击某个按钮时,是否可以启动一个JPA事务并跨越给定有状态bean上的多个回发,并提交更改或回滚 我尝试在我的bean上设置以下参数: @有状态 @TransactionManagementTransactionManagementType.BEAN 以及EntityManager: @PersistenceContexttype=PersistenceContextt

我需要创建一个简单的JEE应用程序,它可以有两种模式。首先,它会自动将每次修改存储到数据库中,其次,所有更改都会按需存储。当用户单击某个按钮时,是否可以启动一个JPA事务并跨越给定有状态bean上的多个回发,并提交更改或回滚

我尝试在我的bean上设置以下参数: @有状态 @TransactionManagementTransactionManagementType.BEAN

以及EntityManager: @PersistenceContexttype=PersistenceContexttype.EXTENDED

但我在尝试提交时遇到以下异常: java.lang.IllegalStateException:事务在当前线程中未处于活动状态


如果不可能这样做,那么创建上述功能的最简单方法是什么?

这是因为您忘记打开事务。您使一切都正确无误,但如果您的PersistenceContext是JTA而不是RESOURCE_LOCAL,您必须在@Stateful bean中注入一个UserTransaction,然后在进行更改之前启动一个事务。

是的,我确实启动了一个事务:@RESOURCE private UserTransaction tx@PostConstruct public void initialize{try{tx.begin;logger.logLevel.INFO,CALL Bean.initialize,事务成功启动;}catch NotSupportedException |系统异常e{logger.logLevel.severy,begin事务失败:{0},e.toString;}有状态bean客户端是如何实现的?