2011-08-08 27 views
18

私は、次のエラーを取得しています:"いいえ永続ユニットが見つかりました" エラー

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) 

は、ここに私の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> 

ここでは私の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> 

persistence.xmlはビルドパスにあるsrc/META-INFにありますので、正しく見つかるはずです。誰にでもアイデアはありますか?

+1

persistence.xmlがビルドディレクトリ(またはそのようなもの)にコピーされていますか? – Jeremy

+0

@Jeremyどうすればこのことを確認できますか? –

+0

それは異なります。どのようにアプリケーションを構築していますか? Eclipse?蟻? Maven? – Jeremy

答えて

11

よくリソースファイルをoutput-directoryにコピーしないビルドの問題を覚えているので、リソースフォルダ/src/main/resouces/META-INF/persistence.xmlにpersistence.xmlを置きます。

私はちょうど私達の設定を見ていたし、それは少し違って見える:

<!-- 
    - 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> 

ホープ、このことができます:-)

クリス

+0

Ups ...主な相違点はカスタムPersistenceUnitManagerの使用方法です私のWiki https://dev.c-ware.de/confluence/display/PUBLIC/Multiple+persistence.xml+in+a+multi-module+application –

+1

に感謝しました。私はこの記事を見つけました...META-INFは、常に動作するように、リソースディレクトリ内になければなりません! – skiabox

3
  • であなたのpersistence.xmlを保ちますWEB-INF/classes/META-INF/persistence.xml

  • hibernate conflictを削除するictingライブラリ....

  • 削除休止状態 - 3.2.0 jarファイルを休止コアは

1

はあなたが別の非マッピングされたクラスとの関係で休止状態マッピングされたクラスを持っている場合、このエラーは、発生する可能性が存在する場合解決方法は、関係項目を@transientとしてチェックすることです(hibernateは無視します。これがエラーかどうかをチェックし、後で関連するクラスをマップします)。例:

@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; 
} 

} 


そして、これがエラーを与える可能性が非マッピングされたクラスです。この私のそれの仕事のためのリソースフォルダ/src/main/resouces/META-INF/persistence.xml

public class State { 

private String name; 

} 
3

は場所のpersistence.xmlをソリューション

+0

ええ、私はエラーを見つけるのに数時間を費やしています...私はいつも私のエンティティを再構築していました... – alexander

関連する問題