2012-04-11 98 views
0

我得到這個例外,當我嘗試運行我的測試Web應用程序:JPA和Spring MVC的錯誤配置?

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'myDAO': 
Injection of persistence dependencies failed; 
nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'emf' defined in ServletContext resource 
[/WEB-INF/testapp-servlet.xml]: 
Invocation of init method failed; 
nested exception is javax.persistence.PersistenceException: 
No Persistence provider for EntityManager named testapp 

persistence.xml文件是META-INF文件夾:

<?xml version="1.0" encoding="UTF-8" ?> 
<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_2_0.xsd" 
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> 
<persistence-unit name="testapp" transaction-type="RESOURCE_LOCAL"> 
    <class>it.testapp.entities.Person</class> 
    <class>it.testapp.entities.Group</class> 
    <properties> 
     <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> 
     <property name="javax.persistence.jdbc.url" 
      value="jdbc:sqlserver://localhost;databaseName=db_testapp" /> 
     <property name="javax.persistence.jdbc.user" value="user1" /> 
     <property name="javax.persistence.jdbc.password" value="" /> 
    </properties> 

</persistence-unit> 

data-context.xml豆definiton文件是爲WEB-INF文件夾:

<?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" 
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-3.1.xsd"> 


<context:annotation-config /> 
<context:component-scan base-package="it.testapp.dao" /> 

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

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 

<bean id="aDao" class="it.testapp.dao.jpa.PersonJpaDAO" /> 

問題在哪裏?

+0

可能的重複:http://stackoverflow.com/questions/1158159/no-persistence-provider-for-entitymanager-named – 2012-04-11 17:05:23

+0

@CarlosGavidia同樣的問題,但我無法解決... – davioooh 2012-04-12 08:14:01

回答

1

是否需要在<persistence-unit>下添加標籤<provider>

(例如<provider>org.hibernate.ejb.HibernatePersistence</provider>

此外,this answer建議,沒有你的persistence.xml/WEB-INF/classes/META-INF也可能會觸發此錯誤。

+0

我試過,但notting更改... – davioooh 2012-04-11 17:00:11

+0

這不是一個不同的例外或任何東西?如果沒有,你的類路徑中是否有'org.hibernate.ejb.HibernatePersistence'? – 2012-04-11 17:04:53

+0

同樣的例外......我使用Hibernate 4,所以在我的類路徑中有'hibernate-entitymanager-4.1.1.Final.jar' – davioooh 2012-04-12 08:13:08