将 entityManager 注入自定义 Hibernate 拦截器 class

Inject entityManager into custom Hibernate Interceptor class

我想在 Hibernate 拦截器上从 Hibernate 注入 entityManager Class。我正在使用 EJB 和 JBoss。事务是 JTA,提供者是 org.hibernate.ejb.HibernatePersistence.

我试过这样做:

@Stateless(name = "HistoricInterceptor")
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class HistoricInterceptorImpl extends EmptyInterceptor implements HistoricInterceptor {

@PersistenceContext(name = "windi")
private EntityManager em;

// overriden methods, etc

}

但对 entityManager 的引用始终为 null。

这种行为是预期的吗?如何从拦截器中访问 entityManager class?

我已经放弃了那个确切的解决方案。相反,我创建了另一个具有 EJB 注释的 class。拦截器将通过使用在应用程序上下文中查找 EJB class 的提供程序 class 来调用该 EJB。在那里,entityManager 已正确关联。