Java 回滚不适用于具有子项的实体(JPA)

Java 回滚不适用于具有子项的实体(JPA),java,hibernate,jpa,transactions,jta,Java,Hibernate,Jpa,Transactions,Jta,我有下一个应用程序配置:Karaf2.3.1;Hibernate jpa-2.0 1.0.1.Final;Hibernate-4.2.7.Final;Postgress 9.2 我有一个经过验证的案例,当事务回滚后,数据库中的更改不会删除 案例非常具体,回滚适用于此环境中的所有其他案例 有问题的情况是: 映射实体:A将B作为子对象。B的孩子是C 准备好新实体A及其新子实体B及其新子实体C 由一个getEntityManager()保存的新实体。persist(A)命令。在此期间,将填充肌动蛋白

我有下一个应用程序配置:Karaf2.3.1;Hibernate jpa-2.0 1.0.1.Final;Hibernate-4.2.7.Final;Postgress 9.2

我有一个经过验证的案例,当事务回滚后,数据库中的更改不会删除

案例非常具体,回滚适用于此环境中的所有其他案例

有问题的情况是:

映射实体:A将B作为子对象。B的孩子是C

  • 准备好新实体A及其新子实体B及其新子实体C
  • 由一个getEntityManager()保存的新实体。persist(A)命令。在此期间,将填充肌动蛋白3相关表
  • 在此DB操作之后,但在同一容器管理事务代码的范围内,抛出异常
  • 新创建的3条记录以DB为单位。但这是错误的
根据日志,事务已回滚

| Clearing up EntityManager org.apache.aries.jpa.container.impl.EntityManagerWrapper@5c660d79 as the transaction has completed.
| Closing session
| Closing JDBC container [org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl@7860eaa7]
| HHH000420: Closing un-released batch
| Closing logical connection
| Logical connection closed
| JTA sync : afterCompletion(4)
| Transaction afterCompletion callback [status=4]
| Session was closed; nothing to do
| after transaction completion
| Aggressively releasing JDBC connection
| after transaction completion
欢迎提出任何意见或建议


提前感谢。

向我们展示与TX注释或XML配置一起保存实体的代码(以您使用的为准)。保存的代码非常简单:getEntityManager().persist(entity);-保存非常简单的代码:getEntityManager().persist(entity);-我们没有TX注释,因为我们有蓝图。我们可以看到正确方法的“has transaction strategy:REQUIRED”消息映射。我相信我们不需要担心映射问题,因为事务应该处理任何数据库更改。在看不到代码的情况下,我只能建议添加blueprint标记。这样你可能会得到一些答案。谢谢!我有明确的证据证明我们的项目、环境和事务配置是正确的。当实体A没有子实体时,事务和回滚工作完全正常。你怎么认为?