日期:2014-05-19  浏览次数:20627 次

我在整合JPA和Spring时老出现Unable to build EntityMangerFactory的问题
在网上找了很多答案,但是都不跟我的情况类似,我是用Hibernate4和jpa2.0,spring3.1.0来做的。下面我贴出我的配置信息,烦请各位大侠帮我看看:

一、首先是persistence.xml:
<?xml version="1.0"?>
<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="itcast" transaction-type="RESOURCE_LOCAL">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>  
  <property name="javax.persistence.validation.mode" value="none"/>
  </properties>
  </persistence-unit>
</persistence>


二、application.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:tx="http://www.springframework.org/schema/tx"
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/tx 
  http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<context:component-scan base-package="com.itcast"></context:component-scan>
<context:annotation-config />

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/shopping" />
<property name="username" value="root" />
<property name="password" value="angel" />
</bean>
<!--
<bean id="myEmf" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="itcast"/>
</bean>
--> <!-- 当我用这个时就能顺利通过,而用下面那个时就报错-->
 
<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="classpath:/META-INF/persistence.xml"/>
<property name="persistenceUnitName" value="itcast"/>
<property name="dataSource" ref="dataSource"/>
<!--<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property> -->
</bean>  
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
  <property name="entityManagerFactory" ref="myEmf"/>
  </bean>

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

三、JUnit测试类:

public cla