2011-08-08 21 views
18

estoy consiguiendo el error siguiente:"Unidad No Persistencia encontrados"

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor': Cannot create inner bean '(inner bean)' while setting bean property 'transactionInterceptor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Cannot resolve reference to bean 'txManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txManager' defined in class path resource [persistenceLayer.xml]: Cannot resolve reference to bean 'entityManagerFactory' while setting bean property 'entityManagerFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [persistenceLayer.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No persistence unit with name 'CounterpartContacts' found 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Cannot resolve reference to bean 'txManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txManager' defined in class path resource [persistenceLayer.xml]: Cannot resolve reference to bean 'entityManagerFactory' while setting bean property 'entityManagerFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [persistenceLayer.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No persistence unit with name 'CounterpartContacts' found 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txManager' defined in class path resource [persistenceLayer.xml]: Cannot resolve reference to bean 'entityManagerFactory' while setting bean property 'entityManagerFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [persistenceLayer.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No persistence unit with name 'CounterpartContacts' found 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [persistenceLayer.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No persistence unit with name 'CounterpartContacts' found 
Caused by: java.lang.IllegalArgumentException: No persistence unit with name 'CounterpartContacts' found 
    at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainPersistenceUnitInfo(DefaultPersistenceUnitManager.java:337) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:219) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:185) 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:237) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1062) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1029) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:420) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:246) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:955) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:246) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:955) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBeanDefinition(BeanDefinitionValueResolver.java:198) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:116) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:955) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:102) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:68) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:54) 
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:247) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:311) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1038) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:420) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:290) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:348) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77) 
    at com.apollo.counterpartcontacts.service.PersistenceManagerTest.beforeClass(PersistenceManagerTest.java:43) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) 
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:537) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:206) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:132) 
    at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:173) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105) 
    at org.testng.TestRunner.runWorkers(TestRunner.java:1182) 
    at org.testng.TestRunner.privateRun(TestRunner.java:761) 
    at org.testng.TestRunner.run(TestRunner.java:612) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:335) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:330) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:241) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1169) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1094) 
    at org.testng.TestNG.run(TestNG.java:1006) 
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:107) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:199) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:170) 

Aquí está mi archivo persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 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_2_0.xsd"> 
    <persistence-unit name="CounterpartContacts"> 
     <jta-data-source>java:/comp/env/jdbc/CounterpartContact</jta-data-source> 
     <class>com.counterpartcontacts.entity.AgentContact</class> 
     <class>com.counterpartcontacts.entity.SecurityContact</class> 
     <class>com.counterpartcontacts.entity.Bank</class> 
     <properties> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

Aquí está mi persistenceLayer.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:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 


    <bean id="persistenceManager" class="com.apollo.counterpartcontacts.service.PersistenceManager"> 
    </bean> 

    <tx:annotation-driven transaction-manager="txManager"/> 
<!-- <context:annotation-config /> --> 

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

    <bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="CounterpartContactDataSource" /> 
     <property name="persistenceUnitName" value="CounterpartContacts" /> 
     <property name="loadTimeWeaver"> 
      <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" /> 
     </property> 
    </bean> 

</beans> 

el persistence.xml se encuentra en src/META-INF, que se encuentra en la trayectoria de la estructura, por lo que debe encontrarse correctamente. ¿Alguien tiene alguna idea?

+1

¿está seguro de que el persistence.xml se copia a la carpeta de compilación (o algo por el estilo)? – Jeremy

+0

@Jeremy ¿Cómo podría verificar esto? –

+0

Depende. ¿Cómo estás construyendo tu aplicación? ¿Eclipse? ¿Hormiga? Maven? – Jeremy

Respuesta

11

Bueno, normalmente coloco el archivo persistence.xml en una carpeta de recursos /src/main/resouces/META-INF/persistence.xml porque recuerdo problemas en la compilación que no copian los recursos en el directorio de salida.

acabo de tener un vistazo a nuestra configuración y se ve un poco diferente:

<!-- 
    - Drives transactions using local JPA APIs 
--> 
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory"/> 
</bean> 

<tx:annotation-driven mode="aspectj" proxy-target-class="true" /> 

<!-- 
    Custom PersistenceUnitManager, that reads all persistence.xml files in the 
    classpath and merges them to one single virtual persistence.xml. 

    In order to operate properly, all persistence.xml have to define the same 
    persistence unit name. 
--> 
<bean id="persistenceUnitManager" class="de.cware.cweb.jpa.MergingPersistenceUnitManager"> 
    <property name="persistenceXmlLocations"> 
     <list> 
      <value>classpath*:META-INF/persistence.xml</value> 
     </list> 
    </property> 
    <property name="defaultDataSource" ref="dataSource"/> 
</bean> 

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

<!-- 
    Creates a EntityManagerFactory for use with the Hibernate JPA provider and a simple 
    in-memory data source populated with test data 
--> 
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="loadTimeWeaver"> 
     <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/> 
    </property> 
    <property name="jpaDialect"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/> 
    </property> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="false"/> 
      <property name="generateDdl" value="true"/> 
     </bean> 
    </property> 
    <property name="jpaProperties"> 
     <props> 
      <prop key="hibernate.dialect">${cweb.database.dialect}</prop> 
      <prop key="hibernate.hbm2ddl.auto">${cweb.database.generate}</prop> 
      <prop key="hibernate.search.default.indexBase">${cwb.home}/indexes</prop> 
      <prop key="hibernate.ejb.naming_strategy">de.cware.cweb.jpa.QuotingNamingStrategy</prop> 
     </props> 
    </property> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="persistenceUnitManager" ref="persistenceUnitManager"/> 
</bean> 
<bean id="dataSource" class="org.apache.commons.dbcp.ManagedBasicDataSource"> 
    <property name="driverClassName" value="${cweb.database.driver}"/> 
    <property name="url" value="${cweb.database.url}"/> 
    <property name="username" value="${cweb.database.user}"/> 
    <property name="password" value="${cweb.database.password}"/> 
    <property name="initialSize" value="${cweb.database.initial-pool-size}"/> 
    <property name="maxIdle" value="${cweb.database.min-pool-size}"/> 
    <property name="maxActive" value="${cweb.database.max-pool-size}"/> 
    <property name="validationQuery" value="#{'${cweb.database.validationQuery}}'.length()==0?'':'${cweb.database.validationQuery}'}"/> 
    <property name="testOnBorrow" value="#{'${cweb.database.validationQuery}}'.length()==0?false:true}"/> 
    <property name="testWhileIdle" value="#{'${cweb.database.validationQuery}}'.length()==0?false:true}"/> 
    <property name="timeBetweenEvictionRunsMillis" value="#{'${cweb.database.validationQuery}}'.length()==0?-1:10000}"/> 
    <property name="minEvictableIdleTimeMillis" value="#{'${cweb.database.validationQuery}}'.length()==0?-1:60000}"/> 
    <property name="defaultTransactionIsolation" value="#{ T(java.sql.Connection).TRANSACTION_READ_COMMITTED}"/> 
</bean> 

Esperanza esto ayuda :-)

Chris

+0

Ups ... acabo de ver que la principal diferencia era el uso de un PersistenceUnitManager personalizado ... I describe que en mi dios –

+1

Gracias Wiki https://dev.c-ware.de/confluence/display/PUBLIC/Multiple+persistence.xml+in+a+multi-module+application he encontrado este post ...¡META-INF siempre debe estar dentro del directorio de recursos, para que pueda funcionar! – skiabox

3
  • mantener su persistence.xml en WEB-INF/classes/META-INF/persistence.xml

  • eliminar hibernate confl contradictorios bibliotecas ....

  • quitar hibernación - 3.2.0 frasco si núcleo de Hibernate es que hay

1

Este error puede ocurrir si tiene un mapeado de hibernación clase con las relaciones con otra clase no asignada, una solución es verificar el elemento de relación como @transient (hibernate lo ignorará, use esto solo para verificar si este es el error, y luego mapee la clase relacionada). Ejemplo:

@Entity 
public class City { 

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
private int id; 

private String name; 

@Transient 
private State state; 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public State getState() { 
    return state; 
} 

public void setState(State state) { 
    this.state = state; 
} 

} 


Y esta es la clase asignada no-lo que puede dar el error:

public class State { 

private String name; 

} 
3

lugar persistence.xml en una carpeta de recursos /src/main/resouces/META-INF/persistence.xml para mí es el trabajo de este solución

+0

Hm, solo me paso horas y horas para encontrar el error ... Estaba reconstruyendo mis entidades todo el tiempo ... – alexander

Cuestiones relacionadas