java - JPA EJB PersistenceContext 没有注入(inject) EntityManager

标签 java hibernate maven jpa

我将 Wildfly 9.0.1 Final 与有效的 JNDI 数据源一起使用。我已经设置了我所有的实体,但我似乎无法让它工作。我正在尝试使用 PersistenceContext 注入(inject) EntityManager,但它似乎不起作用,并且抛出了一个空指针异常:

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="pu" transaction-type="JTA">
        <jta-data-source>java:jboss/jdbc/ds</jta-data-source>
        <class>EventEntity</class>
        <class>EventDaoImpl</class>
        <properties>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
            <property name="hibernate.archive.autodetection" value="class"/>
        </properties>
    </persistence-unit>
</persistence>

EventEntity 是实体,EventDaoImpl 是处理其基本 CRUD 操作的类:

@Stateless
public class EventDaoImpl {

    @PersistenceContext(unitName = "pu")
    private EntityManager em;

    public List<EventEntity> getEvents() {
        Query q = em.createQuery("SELECT e from EventEntity AS e");
        return q.getResultList();
    }
}

可能值得一提的是,JPA 和 DaoImpl 在一个 maven 模块中,而我正试图从另一个模块访问它。依赖关系是正确的。我正在使用以下代码在另一个类中对此进行测试:

EventDaoImpl edi = new EventDaoImpl();
List<EventEntity> events = edi.getEvents();

我尝试在 persistence.xml 文件中指定提供程序,如下所示:

<provider>org.hibernate.ejb.HibernatePersistence</provider>

但我的 IDE 说它无法解决 org.hibernate 之后的任何问题,这很奇怪,因为我确实在 jpa pom.xml 中设置了对 hibernate 的 Maven 依赖项:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.10.Final</version>
</dependency>

如有任何帮助,我们将不胜感激。

最佳答案

EventDaoImpl edi = new EventDaoImpl();

应该是:

@Inject
EventDaoImpl edi;

或:

@EJB
EventDaoImpl edi;

这是因为您已将 EventDaoImpl 注释为无状态 bean。所以你必须将它作为一个 bean 注入(inject)

关于java - JPA EJB PersistenceContext 没有注入(inject) EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33432382/

相关文章:

java - JsonMappingException : lazily initialize a collection without using @Jsonignore的解决方法

java - Hibernate Envers - 审计实体无法从空的审计表关系中恢复 ID

java - 在哪里可以找到一些 Maven 生命周期文档

java - 如何使用具有 void 返回类型的 Callable?

java - 通过应用程序显示 ProgressDialogs 的最佳实践?

java - hibernate、jpa、c3p0 和警告 HHH000208

java - Java 5 中的 CXF - 额外的 Maven 依赖项

java - 关键字 'statistics' 附近的语法不正确。 Spring.IO

java - 编写一个方法,该方法接受一串大括号,如果括号匹配则返回 true,如果不匹配则返回 false

java - java中整数输入if while cond为假