0

次のような JpaController クラスがあります。

public class JpaController
{
  @Inject private EntityManager em;

  @Transactional
  public void create(Message msg)
  {
    em.persist(msg);
  }
}

をインストールしてcom.google.inject.persist.PersistFilterいます (この時点では HTTP リクエストに参加していないため、フィルタリングはしていませんが、バックグラウンド スレッドです)。

私もインストールしますnew JpaPersistModule(PU)

EntityManager が正常に読み込まれたと思います (ただし、コードがその行に到達していないため、これについては確信が持てません)。

スローされる例外は、インターセプターからのものです@Transactional

java.lang.NullPointerException
  at org.eclipse.persistence.internal.jpa.EntityManagerImpl.getActivePersistenceContext(EntityManagerImpl.java:1712)
  at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.begin(EntityTransactionImpl.java:49)
  at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:62)
  at my code - the line that called controller.create(msg);

使用したライブラリ: EclipseLink 2.4.1、guice 3.0、guice-persist 3.0、guice-jndi 3.0、guice-servlet 3.0、MySQL 5.1.25、javax.persistence 2.0.4、Jackson、activemq、lombok、joda-time、javax。メール、javax.inject、asm、jersey、log4j、jettison、jsr311。

4

2 に答える 2

0

私の推測では、永続化ユニットの開始/初期化に失敗したか、正しく構成されていません。

展開時にエラーが発生したかどうかを確認するには、(persistence.xml で) 最上級のログを有効にします。また、デバッガーを使用して、null の内容を確認してください。

于 2013-09-10T14:54:08.560 に答える