entityManager.createQuery()上的AbstractMethodError

时间:2014-12-17 04:21:14

标签: java hibernate jpa orm glassfish

使用GlassFish 4堆栈跟踪如下所示

Caused by: java.lang.AbstractMethodError
at com.sun.enterprise.container.common.impl.EntityManagerWrapper._getDelegate(EntityManagerWrapper.java:197)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createQuery(EntityManagerWrapper.java:455)
at com.wellpoint.mobility.aggregation.core.configuration.impl.ConfigurationManagerImpl.loadConfiguration(ConfigurationManagerImpl.java:262)

以下是hibernate jar,通过Google搜索我收集到的这个问题是相关的。

hibernate-commons-annotations-4.0.2.Final.jar
hibernate-core-4.2.15.Final.jar
hibernate-entitymanager.4.2.15.Final.jar
hibernate-jpa-2.0-api.1.0.1.Final.jar

根据我在同一个例外看到的另一个问题,hibernate JPA 2.0应该适用于hibernate版本> 3.5。数学课的模糊回忆告诉我4.2.15> 3.5,所以我不应该有这些问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

GlassFish 4使用Java EE 7,因此您应该使用JPA 2.1而不是JPA 2.0。

根据Hibernate文档,这是兼容性套件:

  • JPA 1.0:ORM 3.2 +

  • JPA 2.0:ORM 3.5 +

  • JPA 2.1:ORM 4.3 +

所以你应该将Hibernate 4.3与JPA 2.1一起使用:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.7.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>