Code Bye

整合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 class ProductTest {

@Test
public void runtest(){
ApplicationContext cxt = new ClassPathXmlApplicationContext(“application.xml”);
}
}

在上面的配置中,当我用application.xml中注释掉的那个EntityManagerFactoryBean来测试时就能顺利通过,而用那个没注释掉的EntityManagerFactoryBean来测试时就会出现如下错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name “”myEmf”” defined in class path resource [application.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: itcast] Unable to build EntityManagerFactory
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: itcast] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:257)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
… 35 more
Caused by: org.hibernate.HibernateException: Error applying BeanValidation relational constraints
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:304)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1741)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:93)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
… 41 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208)
… 46 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:524)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:119)
… 51 more
Caused by: javax.validation.ValidationException: Unable to instantiate Configuration.
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:272)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521)
… 52 more
Caused by: java.lang.NullPointerException
at java.util.ResourceBundle.getBundle(ResourceBundle.java:1026)
at org.hibernate.validator.engine.ResourceBundleMessageInterpolator.loadBundle(ResourceBundleMessageInterpolator.java:202)
at org.hibernate.validator.engine.ResourceBundleMessageInterpolator.getFileBasedResourceBundle(ResourceBundleMessageInterpolator.java:182)
at org.hibernate.validator.engine.ResourceBundleMessageInterpolator.<init>(ResourceBundleMessageInterpolator.java:81)
at org.hibernate.validator.engine.ResourceBundleMessageInterpolator.<init>(ResourceBundleMessageInterpolator.java:73)
at org.hibernate.validator.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:57)
at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:43)
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:269)
… 54 more

这个问题我纠结了两天了,希望有高手能帮小弟解决下困扰,小弟感激不尽!

 

 


40分
<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>   

你把<property name=”persistenceUnitName” value=”itcast”/>
这个注释掉试试咧,或者<property name=”persistenceUnitName” value=”itcast”/>
<property name=”dataSource” ref=”dataSource”/> 
把这两个参数颠倒一下位置

之前试过了,也没用,不过也非常感谢你的回复!
哥们,用高版本,新版本是要付出代价的,javaee6的问题(可能是jar包冲突,也可能是myeclipse的bug),换成javaee5就没问题了
我也出现这个问题了 怎么解决的啊!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明整合JPA和Spring时出现Unable to build EntityMangerFactory