Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @PersistenceUnit注释不工作_Java_Hibernate_Jpa_Persistence_Cdi - Fatal编程技术网

Java @PersistenceUnit注释不工作

Java @PersistenceUnit注释不工作,java,hibernate,jpa,persistence,cdi,Java,Hibernate,Jpa,Persistence,Cdi,我想在我的应用程序中使用@PersistenceUnit注释来创建应用程序管理的EntityManager @PersistenceUnit(unitName="primary") private static EntityManagerFactory entityManagerFactory; EntityManager entityManager = entityManagerFactory.createEntityManager(); 这似乎不起作用。我通过调试器运行

我想在我的应用程序中使用@PersistenceUnit注释来创建应用程序管理的EntityManager

@PersistenceUnit(unitName="primary")


private static EntityManagerFactory entityManagerFactory;        
EntityManager entityManager = entityManagerFactory.createEntityManager();
这似乎不起作用。我通过调试器运行代码,发现entityManagerFactory为null。我的猜测是,用@PersistenceUnit注释注入持久性上下文不起作用

我的应用程序是CDI应用程序。它以前不是CDI应用程序——我通过在WEB-INF中创建一个beans.xml文件将其转换为CDI,我需要这样做


我需要在CDI中配置什么才能让注释正常工作吗?谢谢。

我有一个只使用JavaSE运行的JPA应用程序。我没有WEB-INF/beans.xml,但我有META-INF/persistence.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="JPAPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>jpa.Container</class>
    <class>jpa.Item</class>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:D:\NetBeansProjects\JPA\jpaTestDB;create=true"/>
      <property name="javax.persistence.jdbc.password" value=""/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <property name="javax.persistence.jdbc.user" value=""/>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

org.eclipse.persistence.jpa.PersistenceProvider
集装箱
jpa.项目
Container
Item
是我的
jpa
包中的两个持久性类


这是由Netbeans自动生成的。在持久性一章的官方(Sun/Oracle)Java EE教程中,还有一些关于在没有Java EE的情况下使用JPA的信息。

您使用的是应用服务器,还是tomcat?我使用的是JBoss 7。这是Maven部署的一个基本struts hibernate项目。我添加CDI只是为了让这个注释工作。我不确定@PersistenceUnit是否在静态字段上工作。我从来没有试过。看起来这不是一个好主意。是的,我不知道为什么这个人需要CDI来使用JPA。我以这种方式使用JPA,在EJB3bean和普通POJO对象中,它可以工作。