私のプロジェクトには、Stateless Entity Beans(EJB 3.x) と EJB Beans(EJB 2.x) およびその他のクラスがあります。Entity Bean を EJB Bean に注入したい。したがって、JNDI の方法、つまり (BeanName#completename) を使用して注入することはできますが、JNDI ルックアップなしで別のエンティティ Bean にエンティティ Bean を注入するのと同じように、@EJB を使用して注入したいと考えています。これらの Bean は両方とも異なるモジュールの一部ですが、同じサーバーにデプロイされています。私はeclipselinkでweblogicを使用しています。
2 に答える
エンティティ Bean が EJB Bean に注入されることはありません。EntityManager を使用して、エンティティ Bean で DB 操作を実行できます。データベース操作エンティティを操作するには、エンティティを EntityManager 永続コンテキストに関連付ける必要があります。そのため、永続化状態になるまでエンティティを操作できません。
すべてのトランザクション スコープの永続コンテキストは、次のように @PersistentContext を EntityManager オブジェクトに注入することによって構成されます。
@PersistenceContext(name="PersistentUnitName")
private EntityManager entityManager;
EJB 3 または EJB 2 を使用していますか? EclipseLink は EJB 2 EntityBean をサポートせず、EJB 3 エンティティのみをサポートします。
Entity Bean を注入することはできません。意味がありません。EntityManager を介してデータベースからクエリを実行する必要があります。@PersistenceContext を使用して EntityManager を注入できます。
見る、
http://en.wikibooks.org/wiki/Java_Persistence/Runtime#Java_Enterprise_Edition