我有一个这样的 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。