1

我们在 WAS 8.5 上运行 EAR,我们的每个 DAO 都重复了 31 次。注意到我们的 persistence.xml 有 30 个 JNDI 数据源,我测试了减少数量,实际上重复计数减少了。

但是我已经尝试连续删除所有多余的行,但我仍然得到重复项。不过,删除最后一行会给我一个 NestedJarException。

   <persistence-unit name="unitTest"
          transaction-type="JTA">    
          <jta-data-source>jdbc/Testing/Ds</jta-data-source>
          <mapping-file>META-INF/default-mappings.xml</mapping-file>
          <exclude-unlisted-classes>false</exclude-unlisted-classes>
   </persistence-unit>

有谁知道可能导致我的 EJB 类为每个持久性单元重复的其他任何事情?

问候

4

1 回答 1

1

如果您检查JPA 2.0 规范第 76 页第 3.2 项“实体实例的生命周期”,如下所示:

3.2 实体实例的生命周期 本节介绍EntityManager 操作用于管理实体实例的生命周期。

实体实例的特征可以是新的、托管的、分离的或删除的。

• 新实体实例没有持久标识,并且尚未与持久上下文相关联。

• 托管实体实例是具有当前与持久性上下文相关联的持久性身份的实例。

• 分离实体实例是具有不(或不再)与持久性上下文相关联的持久身份的实例。

• 删除的实体实例是具有持久身份的实例,与持久上下文相关联,将在事务提交时从数据库中删除。

比我想象的你的情况意味着你有 30 个 jpa 持久对象,每个对象映射为 1 个持久上下文(持久标识),指向每个数据库,你可能有 1 个没有持久标识的分离和/或新对象。

发生这种情况是因为规范如何确定应实施的实体实例生命周期。

问候

于 2013-04-25T13:31:11.467 回答