JBoss7を使用してJavaEE6ベースのWebアプリケーションを開発しています。私のアプリケーションでは、EJBにEntityManagerを次のように挿入しています。
class ForumServiceEJB
{
@PersistenceContext(type=EXTENDED)
private EntityManager em;
}
class TopicServiceEJB
{
@PersistenceContext(type=EXTENDED)
private EntityManager em;
}
ForumServiceEJBのEntityManagerを使用して一部のデータを更新すると、変更がDBに反映されますが、TopicServiceEJBのEntityManagerはそれらの変更を確認できず、結果は常にキャッシュからフェッチされます。
エンティティに遅延読み込みタイプの子エンティティコレクションが含まれているため、ExtendedPerssisteenceContextを使用しています。
ExtendedPersistenceContextタイプのEntityManagerを使用/挿入し、1つのEJBで異なるEntityManagerを作成して、他の異なるEJB EntityManagerによって行われた変更を引き続き確認するにはどうすればよいですか?
EntityManagersはRequestScopedオブジェクトである必要があります。
public class MyEntityManagerProducers {
@Produces @RequestScoped
public EntityManager createDbEm() {
return Persistence.createEntityManagerFactory("forumDb").
createEntityManager();
}
public void disposeUdEm(@Disposes EntityManager em) {
em.close();
}
それは行く方法ですか?