Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NoSuchMethodError:javax.persistence.JoinColumn.foreignKey()_Java_Hibernate_Maven_Jpa_Openshift - Fatal编程技术网

NoSuchMethodError:javax.persistence.JoinColumn.foreignKey()

NoSuchMethodError:javax.persistence.JoinColumn.foreignKey(),java,hibernate,maven,jpa,openshift,Java,Hibernate,Maven,Jpa,Openshift,我试图在OpenShift(JBoss Enterprise application Platform 6)上部署我的应用程序,我得到了标题中提到的NoSuchMethodError。因此,我在谷歌上搜索了整件事,发现了一些文章或线程提到这个方法自JPA-API2.1以来就可用。我发现Openshift所必需的依赖项包含JPA-API2.0。我试图排除此依赖项,但它不起作用。有什么想法吗?请在下面找到pom.xml <project xmlns="http://maven.apache.o

我试图在OpenShift(JBoss Enterprise application Platform 6)上部署我的应用程序,我得到了标题中提到的NoSuchMethodError。因此,我在谷歌上搜索了整件事,发现了一些文章或线程提到这个方法自JPA-API2.1以来就可用。我发现Openshift所必需的依赖项包含JPA-API2.0。我试图排除此依赖项,但它不起作用。有什么想法吗?请在下面找到pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>christmasmarkets</groupId>
<artifactId>christmasmarkets</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>christmasmarkets</name>
<repositories>
    <repository>
        <id>eap</id>
        <url>http://maven.repository.redhat.com/techpreview/all</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>springsource-repo</id>
        <name>SpringSource Repository</name>
        <url>http://repo.springsource.org/release</url>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>eap</id>
        <url>http://maven.repository.redhat.com/techpreview/all</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
    <spring.version>4.1.2.RELEASE</spring.version>
    <hibernate.version>4.3.7.Final</hibernate.version>
    <hibernate-annotations.version>3.5.6-Final</hibernate-annotations.version>
    <hibernate-commons-annotations.version>3.2.0.Final</hibernate-commons-annotations.version>
    <jackson.version>2.2.3</jackson.version>
    <postgre.version>9.3-1102-jdbc41</postgre.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>3.0.2.Final-redhat-4</version>
        <type>pom</type>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate.javax.persistence</groupId>
                <artifactId>hibernate-jpa-2.0-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgre.version}</version>
    </dependency>

</dependencies>
<profiles>
    <profile>
        <!-- When built in OpenShift the 'openshift' profile will be used when 
            invoking mvn. -->
        <!-- Use this profile for any OpenShift specific customization your app 
            will need. -->
        <!-- By default that is to put the resulting archive into the 'deployments' 
            folder. -->
        <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html -->
        <id>openshift</id>
        <build>
            <finalName>christmasmarkets</finalName>
            <plugins>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.1.1</version>
                    <configuration>
                        <outputDirectory>deployments</outputDirectory>
                        <warName>ROOT</warName>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

4.0.0
圣诞节市场
圣诞节市场
战争
1
圣诞节市场
eap
http://maven.repository.redhat.com/techpreview/all
真的
真的
springsource回购
SpringSource存储库
http://repo.springsource.org/release
eap
http://maven.repository.redhat.com/techpreview/all
真的
真的
UTF-8
1.6
1.6
4.1.2.1发布
4.3.7.最终版本
3.5.6-最终版本
3.2.0.1最终版本
2.2.3
9.3-1102-jdbc41
org.jboss.spec
jboss-javaee-6.0
3.0.2.Final-redhat-4
聚甲醛
假如
org.hibernate.javax.persistence
hibernate-jpa-2.0-api
org.springframework
spring上下文
${spring.version}
org.springframework
弹簧网
${spring.version}
org.springframework
SpringWebMVC
${spring.version}
org.springframework
德克萨斯州春季
${spring.version}
org.springframework
春季甲虫
${spring.version}
com.fasterxml.jackson.core
杰克逊核心
${jackson.version}
com.fasterxml.jackson.core
杰克逊数据绑定
${jackson.version}
com.fasterxml.jackson.core
杰克逊注释
${jackson.version}
org.hibernate
休眠实体管理器
${hibernate.version}
org.postgresql
postgresql
${postgre.version}
openshift
圣诞节市场
maven战争插件
2.1.1
部署
根

将此Maven依赖项添加到pom.xml中:

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

org.hibernate.javax.persistence
hibernate-jpa-2.1-api
1.0.0.1决赛

这里的问题是JPA2.0是由容器在运行时提供的。在
pom.xml
中排除提供的依赖项仅在编译时有效。要解决此问题,必须在容器中配置类加载

OpenShift JavaEE 6支持基于JBoss AS 7。从文件:

jboss-deployment-structure.xml是特定于jboss的部署 可用于控制细粒度中类加载的描述符 态度。它应该放在META-INF的顶层部署中 (或用于WEB部署的WEB-INF)。它可以执行以下操作:

   Prevent automatic dependencies from being added
   Add additional dependencies
   ...
因此,您需要添加一个自定义的
jboss部署结构.xml
文件,以避免自动添加
hibernate-jpa-2.0-api

基于:


我应该把这个xml文件放在哪里?@H.Aqjn“它应该放在顶级部署中,在META-INF(或WEB部署的WEB-INF)中”
<jboss-deployment-structure>
   <deployment>
      <exclusions>
         <module name="javax.persistence.api" />
      </exclusions>
   </deployment>
</jboss-deployment-structure>