2016-09-28 69 views
0

我得到「無法找到聲明的元素'持久性'例外 我試過OpenJPA 2.1.1 - Cannot find the declaration of element 'persistence'給出的解決方案,但它不起作用。 。我的項目我曾嘗試更新是根據張貼在StackOverflow上其他解決方案 '的persistence.xml',但沒有運氣SpringMVC + JPA +找不到元素'persistence'的聲明

項目結構

enter image description here

persistence.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
    version="1.0"> 

    <persistence-unit name="DerbyPU" transaction-type="JTA"> 
     <jta-data-source>java:/SpringPrac</jta-data-source> 
     <class>com.example.dto.Vehicle</class> 

     <properties> 
      <!-- Transaction integration --> 
      <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" /> 
      <property name="hibernate.ejb.interceptor" value="com.cts.interceptor.AuditLogInterceptor" /> 
     </properties> 

    </persistence-unit> 

</persistence> 

的applicationContext.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" xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd 
          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd 
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> 

    <context:annotation-config /> 
    <context:component-scan base-package="com.example.controller, com.example.dto" /> 

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    </bean> 

    <!-- Creates a EntityManagerFactory for use with the Hibernate JPA provider --> 
    <bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="persistenceUnitName" value="DerbyPU" /> 
     <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" /> 
     <property name="jpaVendorAdapter"> 
      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
       <property name="databasePlatform" value="org.hibernate.dialect.DerbyDialect" /> 
       <property name="showSql" value="false" /> 
       <property name="generateDdl" value="false" /> 
      </bean> 
     </property> 

    </bean> 

    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiName" value="java:/SpringPrac" /> 
    </bean> 

    <tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" /> 

</beans> 

Tomcat的(Apache的tomee-webprofile-7.0.1)的context.xml

<Context> 

    <!-- Default set of monitored resources. If one of these changes, the --> 
    <!-- web application will be reloaded.         --> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> 

    <!-- Uncomment this to disable session persistence across Tomcat restarts --> 
    <!-- 
    <Manager pathname="" /> 
    --> 

    <Resource name="java:/SpringPrac" auth="Container" username="app" password="app" 
      type="javax.sql.DataSource" driverClassName="org.apache.derby.jdbc.ClientDriver" 
      url="jdbc:derby://localhost:1527/db;create=true" JtaManaged="true" 
      maxActive="20" maxIdle="10" maxWait="-1"/> 

</Context> 

網絡。 xml

<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 


    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
    <servlet-name>dispatcherServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>dispatcherServlet</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 


    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:applicationContext.xml, classpath:META-INF/persistence.xml</param-value> 
    </context-param> 

    <listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

</web-app> 

的dispatcherServlet.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" xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> 

     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
      <property name="prefix"> 
       <value>/WEB-INF/views/</value> 
      </property> 
      <property name="suffix"> 
       <value>.jsp</value> 
      </property> 
     </bean> 

     <context:annotation-config/> 

     <context:component-scan base-package="com.example.controller, com.example.dto"/> 
</beans> 

VehicleEntity.java

package com.example.dto; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="Vehicle") 
public class VehicleEntity { 

    @Id 
    @GeneratedValue 
    int vehicleId; 
    String vehicleName; 

    public int getVehicleId() { 
     return vehicleId; 
    } 

    public void setVehicleId(int vehicleId) { 
     this.vehicleId = vehicleId; 
    } 

    public String getVehicleName() { 
     return vehicleName; 
    } 

    public void setVehicleName(String vehicleName) { 
     this.vehicleName = vehicleName; 
    } 

} 

VehicleController.java

package com.example.controller; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.servlet.ModelAndView; 

import com.example.dto.VehicleCRUD; 
import com.example.dto.VehicleEntity; 

@Controller 
public class VehicleController { 

    @Autowired 
    private VehicleCRUD vehicleCrud; 


    @RequestMapping(value="/createVehicle.htm", method = RequestMethod.POST) 
    public ModelAndView createVehicle(@RequestParam("vehicleName") String name) { 
     VehicleEntity vehicleEntity = new VehicleEntity(); 
     vehicleEntity.setVehicleName(name); 
     vehicleCrud.saveVehicle(vehicleEntity); 
     ModelAndView modelAndView = new ModelAndView("vehicleCreated"); 
     return modelAndView; 
    } 

     } 

VehicleCRUD.java

package com.example.dto; 

import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

import org.springframework.stereotype.Component; 

@Component 
public class VehicleCRUD { 

    @PersistenceContext(unitName="DerbyPU") 
    private EntityManager entityManager; 

    public void saveVehicle(VehicleEntity vehicleEntity) { 
     entityManager.persist(vehicleEntity); 

    } 

} 

的index.jsp

<html> 
<body> 
<form action="createVehicle.htm" method="POST"> 
    Vehicle Name : <input type="text" name="vehicleName"/> 
    <input type="submit" value="Create" /> 
</form>  
</body> 
</html> 

VehicleCreated.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
    <h1>Vehicle Created!!!</h1> 
</body> 
</html> 

Maven依賴

enter image description here

的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>com.springHibernate.example</groupId> 
    <artifactId>HibernateSpringMVC</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>HibernateSpringMVC Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.0.7.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>4.0.7.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.0.7.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.0.7.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>2.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>asm</groupId> 
     <artifactId>asm</artifactId> 
     <version>3.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>antlr</groupId> 
     <artifactId>antlr</artifactId> 
     <version>2.7.7</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>3.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.12.1.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.7.9</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.derby</groupId> 
     <artifactId>derbyclient</artifactId> 
     <version>10.12.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>3.1.4.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>3.2.4.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.openjpa</groupId> 
     <artifactId>openjpa-all</artifactId> 
     <version>2.0.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.2.1.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>3.2.4.RELEASE</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>HibernateSpringMVC</finalName> 
    </build> 
</project> 
+1

春天不能加載'persistence.xml'從文件加載列表中刪除它。另一件你正在混合的框架版本從來沒有這樣做。如果你想要奇怪的問題,你正在混合使用Spring 3.2.4,3.1.4和4.0.7。 –

+0

謝謝,將所有的春季版本改爲'3.1.4'已經解決了這個問題。 –

回答

0

改變所有的春季版本 '3.1.4' 已經解決了這個問題。版本不應混用。

enter image description here

相關問題