在 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 的一部分)