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 の操作について説明します。

エンティティ インスタンスは、新規、管理、分離、または削除されたものとして特徴付けることができます。

• 新しいエンティティ インスタンスには永続的な ID がなく、まだ永続化コンテキストに関連付けられていません。

• 管理対象エンティティ インスタンスは、永続コンテキストに現在関連付けられている永続 ID を持つインスタンスです。

• 切り離されたエンティティ インスタンスは、永続化コンテキストに関連付けられていない (またはもはや関連付けられていない) 永続的な ID を持つインスタンスです。

• 削除されたエンティティ インスタンスは、トランザクションのコミット時にデータベースから削除される、永続コンテキストに関連付けられた永続 ID を持つインスタンスです。

あなたの状況は、30個のjpa永続オブジェクトがあり、それぞれがデータベースのそれぞれを指す1つの永続コンテキスト(永続ID)にマップされており、おそらく永続IDのない1つの切り離されたおよび/または新しいオブジェクトがあることを意味します。

これは、エンティティ インスタンスのライフ サイクルを実装する必要があることを仕様がどのように決定するかによって発生します。

よろしく

于 2013-04-25T13:31:11.467 に答える