我创建了JPA项目,并在glassfish v4上部署如下:
班级 -
package com.jpa.model;
class Lookup {
private int id;
private int label;
.... [set/get methods]
}
META-INF / persistence.xml中
<?xml version="1.0" encoding="UTF-8" ?>
<persistence version="2.1" ... ">
<persistence-unit name="dbUnit" transaction-type="JTA">
<jta-data-source>jdbc/MYSQL_DB</jta-data-source>
<class>com.jpa.model.Lookup</class>
</persistence-unit>
</persistence>
EntityManagerUtil
public class EntityManagerUtil {
@PersistenceUnit(name="dbUnit")
protected static EntityManagerFactory entityManagerFactory;
public static void getAllLookups(){
System.out.println("entityManagerFactory : "+entityManagerFactory);// always print null
System.out.println(Persistence.createEntityManagerFactory("dbUnit").createEntityManager().createQuery("SELECT L FROM Lookup L"));// always return correct values
}
}
--------------------------------------
当我尝试调用@PersistenceUnit时,返回始终为null
但是当我尝试使用Persistence.createEntityManagerFactory时,它总是返回正确的值
请你的建议&amp;评论。
答案 0 :(得分:0)
依赖项的注入仅适用于以下托管组件:EJB和Servlet。如果要使用依赖项注入,则必须将EJB的注释添加到类EntityManagerUtil
。我执行此操作然后您必须删除变量static
的{{1}}修饰符和方法entityManagerFactort
如果您正在编写Web应用程序,则可以使用EJB 3.1,因为您将在Glassfish v4上部署它。
也许本教程可以帮助您清除一些想法:https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html