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 - ArrayList 返回错误值

java - 在 Spring Boot 应用程序中修改 Activity 配置文件并刷新 ApplicationContext 运行时

hibernate - 在GGTS中映射一对多关系

标量错误 : bad option: '-make:transitive' on mvn package via command line

java - "The import org.springframework cannot be resolved."

maven - 如何从 maven 中的组中排除所有 Artifact ?

java - Android Studio : errors while running my program

java - HashMap.get() 是否检查多个哈希桶

java - JPA MappedSuperClass 列不可为空

java - Spring + hibernate : could not initialize proxy no Session - What to do when an exception occured on a DAO?