在单个Hibernate事务中保存多个新实体

时间:2012-11-28 15:18:59

标签: java hibernate persistence ejb-3.0 cascade

我正在尝试创建一个EJB服务方法,该方法创建两个新的实体对象并将它们相互关联并与现有实体相关联。类之间的关系如下所示:

ClassA 1:N ClassB
ClassA 1:N ClassC
ClassB 1:N ClassC

目前,所有关系都是双向的,我将每个关系的CascadeType设置为'ALL'。将使用实体管理器查找ClassA的实例。 ClassB和ClassC是作为此方法的一部分创建的新实例。我想要做的是建立关系,保留所有更改,并返回更新的ClassC实例。问题是,当我实际尝试提交事务时,我总是会遇到这样的错误:

  

“(javax.resource.ResourceException:事务处于非活动状态:   tx = TransactionImple< ac,BasicAction:0:ffff7f000001:126a:50b6222c:c2   状态:ActionStatus.ABORT_ONLY>)“

有没有人知道如何做这样的事情?

1 个答案:

答案 0 :(得分:0)

您可能捕获了一个来自transactionnal方法的错误(使用@TransactionAttribute进行了ann),该方法已将事务标记为已回退,因此当前事务不再有效(已由容器回滚)你承诺。