1

我们目前正在使用带有 Glassfish 3 的 openjpa 2.2.1。由于无论如何我们都必须更改我们的基础架构,因此我们正在考虑升级到 Glassfish 4。不幸的是,我无法让 OpenJpa 使用它。每当我尝试访问实体时,我都会得到 AbstractMethodErrors

Caused by: java.lang.AbstractMethodError: org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(Ljavax/persistence/SynchronizationType;Ljava/util/Map;)Ljavax/persistence/EntityManager;

(也就是说,如果我在构建期间使用 openjpa-maven-plugin 增强分类)。如果我使用动态增强,我什至无法部署应用程序。

如果我将持久性提供程序切换到 EclipseLink,它似乎工作正常。不幸的是,更改持久性提供程序并不是一个真正的选择,因为我们使用了一些 OpenJPA 功能。

我也尝试了 OpenJpa 2.2.2,结果相同。在 Glassfish 3 上,同样的事情运行得很好。

4

1 回答 1

1

鉴于发布的错误,看起来 Glassfish 4 假设使用 JPA 2.1 提供程序(由于在创建 EM 时使用了 SynchronizationType 参数)。OpenJPA 还不支持 JPA 2.1 规范。

您需要从 Glassfish 4 中禁用或删除 JPA 2.1 API,以便可以使用 JPA 2.0 API(与 OpenJPA 一起打包)。我不确定使用 Glassfish 禁用此功能是否容易或可行。

此问题刚刚创建为 OpenJPA 的 JIRA,并引用了此 stackoverflow 帖子: https ://issues.apache.org/jira/browse/OPENJPA-2471

于 2014-01-15T14:20:24.157 回答