在 Weblogic 12.1.x 应用程序服务器上为 JPA 2.1 + 'Spring Data JPA' 选择哪个 Maven 依赖项?
Which maven dependency to choose for JPA 2.1 + 'Spring Data JPA' on Weblogic 12.1.x application server?
我正在尝试在 Java 8 上的 Weblogic 12.1.3 上部署 JPA 2.1 (Hibernate) 项目并收到此错误。但适用于 Tomcat 8.
Caused By: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:973)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:824)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3845)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3799)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1412)
Truncated. see log file for complete stacktrace
pom.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!--
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.8.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</exclusion>
</exclusions>
</dependency>
-->
更新:-
如下所述,默认情况下,Weblogic 12.1.3 中未启用 JPA 2.1。并且可以按照此处的说明启用 http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/wls/12c/01-06-004-JavaEE7andWebLogicServer/javaee7.html#section1
可能是 Weblogic 正在使用自己的 JPA 库,该库比您的旧。可能是在安装过程中未启用 JPA 2.1。您需要配置服务器以强制执行您的库而不是 WLS 提供的库。
How to configure prefer application packages
Weblogic 是一个 java-ee 应用程序服务器,带有完整的 java-ee 堆栈(包括 so JPA)。
Weblogic 12.1.3 附带 jpa 2.1,以 eclipselink 作为提供者参见 here
包括 hibernate 作为 jpa 实现在这里没有任何意义,因为服务器已经带有它自己的实现(提供了 maven 范围)
我想这个依赖项
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
足够了(jpa 2.1 是 java-ee 7 stack 的一部分)
我正在尝试在 Java 8 上的 Weblogic 12.1.3 上部署 JPA 2.1 (Hibernate) 项目并收到此错误。但适用于 Tomcat 8.
Caused By: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:973)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:824)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3845)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3799)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1412)
Truncated. see log file for complete stacktrace
pom.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!--
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.8.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</exclusion>
</exclusions>
</dependency>
-->
更新:-
如下所述,默认情况下,Weblogic 12.1.3 中未启用 JPA 2.1。并且可以按照此处的说明启用 http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/wls/12c/01-06-004-JavaEE7andWebLogicServer/javaee7.html#section1
可能是 Weblogic 正在使用自己的 JPA 库,该库比您的旧。可能是在安装过程中未启用 JPA 2.1。您需要配置服务器以强制执行您的库而不是 WLS 提供的库。 How to configure prefer application packages
Weblogic 是一个 java-ee 应用程序服务器,带有完整的 java-ee 堆栈(包括 so JPA)。
Weblogic 12.1.3 附带 jpa 2.1,以 eclipselink 作为提供者参见 here
包括 hibernate 作为 jpa 实现在这里没有任何意义,因为服务器已经带有它自己的实现(提供了 maven 范围)
我想这个依赖项
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
足够了(jpa 2.1 是 java-ee 7 stack 的一部分)