我得到的原因是:java.lang.NoSuchMethodError:javax.persistence.JoinColumn.foreignKey()Ljavax / persistence / ForeignKey这个异常

时间:2017-06-06 17:18:33

标签: hibernate spring-mvc ehcache

基本上我的pom结构依赖关系看起来像

import subprocess
import time

tmp=subprocess.call('clear', shell=True) # 'cls' in windows
keyword = input(" Please enter the word you want the person to guess")
lives = int(input("How many lives would you like to have?"))
print ("There are ", len(keyword), "letters in the word")

time.sleep(2)

我正在尝试ehCache第二级示例的示例,我的项目结构看起来像 enter image description here

我将root context.xml声明为

<dependencies>
     <!-- Spring --> 

     <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>4.0.4.Final</version>
    </dependency>

  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>${org.springframework-version}</version>
   <exclusions>
    <!-- Exclude Commons Logging in favor of SLF4j -->
    <exclusion>
     <groupId>commons-logging</groupId>
     <artifactId>commons-logging</artifactId>
     </exclusion>
   </exclusions>
  </dependency>
  <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-jdbc</artifactId>
   <version>${org.springframework-version}</version>
  </dependency>    
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-orm</artifactId>
   <version>${org.springframework-version}</version>
  </dependency>

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

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

  <dependency>
   <groupId>org.springframework.webflow</groupId>
   <artifactId>spring-webflow</artifactId>
   <version>${org.springwebflow-version}</version>
  </dependency>
  <dependency>
   <groupId>org.springframework.webflow</groupId>
   <artifactId>spring-js</artifactId>
   <version>${org.springjs-version}</version>
  </dependency>

  <!-- Database, JPA -->
  <dependency>
   <groupId>org.hsqldb</groupId>
   <artifactId>hsqldb</artifactId>
   <version>${hsqldb.version}</version>

  </dependency>

    <!-- MySQL database driver -->
   <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.connector-version}</version>
   </dependency>


  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-entitymanager</artifactId>
   <version>${hibernate-version}</version>
  </dependency>

  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-envers</artifactId>
   <version>${hibernate-envers-version}</version>
  </dependency>
  <!-- Servlet -->
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>${servlet-api-version}</version>
   <scope>provided</scope>
  </dependency>



  <dependency>
   <groupId>javax.servlet.jsp</groupId>
   <artifactId>jsp-api</artifactId>
   <version>${jsp-version}</version>
   <scope>provided</scope>
  </dependency>  
  <dependency>  
            <groupId>jstl</groupId>  
            <artifactId>jstl</artifactId>  
            <version>${jstl-version}</version>  
            <scope>compile</scope>  
        </dependency> 
        <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.3.Final</version>
</dependency>


  </dependencies>

我的servlet-contextt.xml是

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- Root Context: defines shared resources visible to all other web components -->
    <import resource="classpath*:/META-INF/mvc-config/servlet-context.xml"/>
    <!-- <import resource="classpath*:/META-INF/security-config/spring-security.xml"/> -->
</beans>

Application.properties看起来像

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">

    <!-- DispatcherServlet Context: defines this servlet's request-processing 
        infrastructure -->

    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />

    <!-- Enables Transaction Annotations -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <context:annotation-config></context:annotation-config>

    <!-- Get AppData properties file -->
    <beans:bean id="appProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <beans:property name="location" value="classpath:META-INF/application.properties" />
    </beans:bean>

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving 
        up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/, file:/${appDataPath}/" />

     <!-- Definition for view resolver -->
          <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
           <beans:property name="prefix" value="/WEB-INF/views/"/>
           <beans:property name="suffix" value=".jsp"/>
          </beans:bean>





    <!-- DataSource Bean -->
    <beans:bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <beans:property name="driverClassName" value="${DB.DRIVER}" />
        <beans:property name="url"
            value="${DB.URL}" />
        <beans:property name="username" value="${DB.UNAME}" />
        <beans:property name="password" value="${DB.PASS}"/>
    </beans:bean>


    <!-- SessionFactory Bean -->
    <beans:bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="dataSource" />
        <beans:property name="packagesToScan" value="com.darshan" />
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">${hibernate.dialect}</beans:prop>
                <beans:prop key="hibernate.show_sql">${hibernate.show_sql}</beans:prop>
                <beans:prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</beans:prop>
                <beans:prop key="net.sf.ehcache.configurationResourceName">${net.sf.ehcache.configurationResourceName}</beans:prop>
                <beans:prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</beans:prop>
                <beans:prop key="hibernate.hbm2ddl.auto">${hibernate.UPDATE_CREATE}</beans:prop>
                <beans:prop key="hbm2ddl.auto">${hbm2ddl.auto}</beans:prop>
            </beans:props>
        </beans:property>
    </beans:bean>

    <!-- TransactionManager -->

    <beans:bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />
    </beans:bean>

    <beans:bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <beans:property name="basename" value="classpath:META-INF/validation" />
        <beans:property name="defaultEncoding" value="UTF-8" />
    </beans:bean>

    <context:component-scan base-package="com.darshan.mn" />

</beans:beans>

我的模型类看起来像

#-- Contains the application configuration data --#
#--- Base file path for storing the files & images ---#
appDataPath=E:/eSchool/appData

#--- Database Props ---#
DB.DRIVER=com.mysql.jdbc.Driver
DB.URL=jdbc:mysql://localhost:3306/interview_preparation
DB.UNAME=root
DB.PASS=tiger

#--- File Upload: 10MB---#
maxFileUploadSize=100000000

#--- Java Mail Props ---#
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.mailgun.org
mail.smtp.port=587
mail.debug=false

#--- MailGun API Props ---#
mailGunUname=postmaster@sandbox187ce31a22334db2b4b17e499b407de6.mailgun.org
mailGunPass=cdf6e6fe99fe01efe669939c6c8c6301

#--- HibernateConfig ---#
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.UPDATE_CREATE=update
hbm2ddl.auto=update
hibernate.hbm2ddl.auto=create
hibernate.cache.use_second_level_cache=true
hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
net.sf.ehcache.configurationResourceName=ehcache.xml

我正在尝试所有Google搜索解决方案,但没有运气: - (

请帮帮我

1 个答案:

答案 0 :(得分:0)

我们需要完整的堆栈跟踪才能完全回答。但是全局调用JoinColumn.foreignKey()的东西需要的JPA版本与你目前在类路径中的版本不同。

您可以通过执行System.out.println(getClass().getResource("/javax/persistence/JoinColumn.class"));

来查看您使用的是哪一个