Java PersistenceContext没有被注入

Java PersistenceContext没有被注入,java,hibernate,jpa,jboss,Java,Hibernate,Jpa,Jboss,我有一个在WildFly 10上运行的Java8/Spring4WebApp,我想使用JPA2.1 我已经创建了一个persitence.xml文件和一个dao类,它使用了以下文件中的一个小片段: 不幸的是,实体管理器没有按其应有的方式注入。我读到: @PersistenceContext注释可用于任何CDIBean、EJB、, Servlet、Servlet侦听器、Servlet过滤器或JSF ManagedBean 我认为使用@Stateful注释会自动使我的dao类成为(ej)bean,因

我有一个在WildFly 10上运行的Java8/Spring4WebApp,我想使用JPA2.1

我已经创建了一个persitence.xml文件和一个dao类,它使用了以下文件中的一个小片段:

不幸的是,实体管理器没有按其应有的方式注入。我读到:

@PersistenceContext注释可用于任何CDIBean、EJB、, Servlet、Servlet侦听器、Servlet过滤器或JSF ManagedBean

我认为使用@Stateful注释会自动使我的dao类成为(ej)bean,因此jboss容器会进行注入,但是没有发生,当我调用
.persist
方法时,我得到了
NullPointerException
。这是为什么?我能修好它吗?我已经尝试使用
@Stateless
注释,并尝试PersistenceContextType.EXTENDED而不是默认的事务注释,但这似乎没有改变任何事情。请清楚地描述这个问题的解决方案是否需要额外的库(spring、hibernate)或者只是配置问题(persistence.xml、standalone.xml…)

我在日志中看到了这一点,但我不确定这意味着什么:

INFO[][org.jboss.as.ejb3.deployment]WFLYEJB0473:JNDI绑定 部署单元“部署”中名为“UserDao”的会话bean “基本战争”如下:

java:global/BasicWebapp/UserDao!com.company.project.data.UserDao java:app/BasicWebapp/UserDao!com.company.project.data.UserDao java:module/UserDao!com.company.project.data.UserDao java:global/BasicWebapp/UserDao java:app/BasicWebapp/UserDao java:module/UserDao

我知道我的datasource和persistence.xml配置正确,因为我将上面的代码片段放在我的
ServletContextListener
类中,成功地完成了注入工作(作为一个小测试,我知道放在那里没有意义)。以下是简明的persistence.xml文件,主要使用jboss提供的默认值,仅供参考:

<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

    <persistence-unit name="customerPU" transaction-type="JTA">

        <jta-data-source>java:jboss/datasources/customerdb</jta-data-source>

        <class>com.company.project.data.Customer</class>

    </persistence-unit> 

</persistence>

java:jboss/datasources/customerdb
com.company.project.data.Customer

是否设置了日志记录?如果未记录任何错误,请尝试增加日志级别以进行调试或跟踪。它可能会给你提示什么被注入,什么没有。嗨,简,我把日志设置为跟踪。没有错误,所有内容都被实例化。他找到了PU、DAO和persistenceContext注释。然而,当谈到注入时,我只看到了以下内容:PersistenceUnitService(第1阶段,共2阶段)用于“service jboss.persistenceunit.”BasicWebapp.war#CustomerPu.。uuuu FIRST uuuu阶段uuuu uuu uu u”。PU已准备好进行注入器操作。我认为问题在于,UserDao类不是由容器创建的,而是由一个bean创建的。我只是做UserDao=newuserdao()。如果是这样,它就不能工作了。在容器创建对象时进行注入。将UserDao注入调用createCustomer()的类。@Jan如何注入类(不使用spring)?
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

    <persistence-unit name="customerPU" transaction-type="JTA">

        <jta-data-source>java:jboss/datasources/customerdb</jta-data-source>

        <class>com.company.project.data.Customer</class>

    </persistence-unit> 

</persistence>