Java 多休眠用户事务

Java 多休眠用户事务,java,hibernate,transactions,Java,Hibernate,Transactions,我正在使用jboss和hibernate在一个web应用程序上用java的相同方法尝试多个事务 因此,我知道基本上您是这样做的:begintransaction->commit/rollback->close 我想做的是在for循环中提交/回滚。对于对象列表,我正在进行更新,如果一切正常,我将分别提交每个对象或回滚 问题是我已经有了相同类型的错误:会话关闭或无效,或者事务无效,或者如果我清除entitymanager,对象被分离 我在网上找到了很多不同的东西,但都没用。我最后尝试的是使用enti

我正在使用jboss和hibernate在一个web应用程序上用java的相同方法尝试多个事务

因此,我知道基本上您是这样做的:begintransaction->commit/rollback->close

我想做的是在for循环中提交/回滚。对于对象列表,我正在进行更新,如果一切正常,我将分别提交每个对象或回滚

问题是我已经有了相同类型的错误:会话关闭或无效,或者事务无效,或者如果我清除entitymanager,对象被分离

我在网上找到了很多不同的东西,但都没用。我最后尝试的是使用entitymanager: em.flush if the updates go right=>这可以工作,但是如果有问题,我尝试回滚这是分离对象,下一次刷新在for循环中不再工作

所以我的问题是:提交/回滚每个对象的正确方式是什么:

for (Object obj : objects) {
//Operations
 if(ok) {
  commit
 }
else {
  rollback
 }
}

谢谢

您是否尝试过在for循环中使用每个对象作为参数调用@Transactional方法?异常处理包括ofc

,因此我尝试返回@Transactional,发现@TransactionattributetTransactionAttributeType.NEw\u是必需的,它应该在每次输入我的方法时创建一个新事务,但它没有。真正发生的事情是,在我的方法结束时刷新不起作用,看起来刷新是在所有for循环结束时进行的。我试图强制flushmode为manual,但它不起作用,因为它在所有操作结束时仍在刷新,而不是针对每个对象。当我尝试使用回滚时,会话将被删除,我得到:org.hibernate.LazyInitializationException:无法初始化代理-无会话

是的,我尝试了,我得到了一个错误。遗憾的是,我不记得到底是哪一个,因为我尝试了很多东西,但我试图将整个操作行放在另一个名为@Transactional annotated的方法中。不起作用:我忘了指出我使用seam 3。实际上,在我做了所有的研究之后,我发现我必须使用回滚。没有使用它,我就没有找到任何解决办法。所以真正的问题是:在回滚销毁第一个会话之后,如何创建新会话?