持久化上下文EntityManager Null指针为什么?

时间:2013-11-24 18:19:26

标签: hibernate jpa jsf-2 glassfish

我正在尝试使用以下技术配置我的工程项目:

Glassfish 4.0 Maven的 JSF 2.0 Hibernate 3+ RichFaces 4+ JPA 2.0

有人能指出包含技术的maven原型吗?如果没有,你能告诉我运行它需要哪一套罐子吗?我试图按正常项目配置它,但问题看起来像那样:

Caused by: java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(Ljavax/persistence/SynchronizationType;Ljava/util/Map;)Ljavax/persistence/EntityManager;
  at com.sun.enterprise.container.common.impl.EntityManagerWrapper.getNonTxEMFromCurrentInvocation(EntityManagerWrapper.java:268)

1 个答案:

答案 0 :(得分:0)

似乎你有类路径问题。 JVM在尝试调用抽象方法实现但未找到它时抛出AbstractMethodError。那么你有什么:

  1. 有旧接口EntityManagerFactory,没有createEntityManager(SynchronizationType,Map)方法
  2. 还有旧的EntityManagerFactory接口的旧实现,名为EntityManagerFactory
  3. 您使用新的EntityManagerFactory接口,其中添加了createEntityManager(SynchronizationType,Map)。如果没有它,Java EE就会得到一个旧的实现。
  4. 也许是地狱?仔细观察项目使用的所有jar文件(我猜你应该看到部署路径中的WEB-INF / lib目录)。因为它们都只是zip文件,解包它们并搜索org / hibernate / ejb / EntityManagerFactoryImpl.class文件。对于包含此文件的每个jar文件,使用javap列出EntityManagerFactoryImpl类的所有方法。