2017-02-12 117 views
1

我使用springmvc來構建我的項目。但我有一個問題:我的持久性有什麼問題?

的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> 

    <persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
     <properties> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/> 
      <property name="hibernate.connection.url" 
         value="jdbc:mysql://localhost:3306/springdemo"/> 
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
      <property name="hibernate.connection.username" value="root"/> 
      <property name="hibernate.connection.password" value="hukangze"/> 
      <property name="hibernate.show_sql" value="true"/> 

      <property name="hibernate.connection.useUnicode" value="true"/> 
      <property name="hibernate.connection.characterEncoding" value="UTF-8"/> 

      <property name="hibernate.format_sql" value="true"/> 
      <property name="hibernate.use_sql_comments" value="false"/> 
      <property name="hibernate.hbm2ddl.auto" value="update"/> 

      <property name="hibernate.connection.autoReconnect" value="true"/> 
      <property name="connection.autoReconnectForPools" value="true"/> 
      <property name="connection.is-connection-validation-required" value="true"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

MVC-調度-servlet.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:mvc="http://www.springframework.org/schema/mvc" xmlns:jpa="http://www.springframework.org/schema/data/jpa" 
     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/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> 

    <context:component-scan base-package="com.ssh.controller"/> 

    <mvc:default-servlet-handler/> 

    <mvc:annotation-driven/> 

    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
     <property name="prefix" value="/WEB-INF/pages/"/> 
     <property name="suffix" value=".jsp"/> 
    </bean> 

    <jpa:repositories base-package="com.ssh.repository"/> 

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> 
     <property name="persistenceUnitName" value="defaultPersistenceUnit"/> 
    </bean> 

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

    <tx:annotation-driven transaction-manager="transactionManager"/> 
</beans> 

當我運行它,我得到這個錯誤:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'javax.persistence.EntityManagerFactory' for property 'entityManagerFactory'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'javax.persistence.EntityManagerFactory' for property 'entityManagerFactory': no matching editors or conversion strategy found 
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'javax.persistence.EntityManagerFactory' for property 'entityManagerFactory'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'javax.persistence.EntityManagerFactory' for property 'entityManagerFactory': no matching editors or conversion strategy found 
Caused by: java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'javax.persistence.EntityManagerFactory' for property 'entityManagerFactory': no matching editors or conversion strategy found 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'javax.persistence.EntityManagerFactory' for property 'entityManagerFactory'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'javax.persistence.EntityManagerFactory' for property 'entityManagerFactory': no matching editors or conversion strategy found 

但是當我撤銷mvc-dispatcher-servlet.xml中的這段代碼時:

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

<tx:annotation-driven transaction-manager="transactionManager"/> 

沒關係。怎麼了?那段代碼是做什麼的?

回答

1

你讀過異常嗎?這是非常詳細:

...property value of type 'java.lang.String' to required type 'javax.persistence.EntityManagerFactory' for property 'entityManagerFactory'...

改變這一行:

<property name="entityManagerFactory" value="entityManagerFactory"/> 

這樣:

<property name="entityManagerFactory" ref="entityManagerFactory"/>