Results 1 to 1 of 1

Thread: Error creating bean with name 'entityManagerFactory

  1. #1

    Default Error creating bean with name 'entityManagerFactory

    I've the an exception when starting a Junit test (currencyTest.java). CurrencyTest.java is autowiring CrudService.java. The implementing class of CRUDService (CRUDServiceBean) needs the EntityManager to be injected. When Spring is trying to inject the EntityManager into CRUDServiceBean.java, the following exception occurs:


    PHP Code:
    Caused byorg.springframework.beans.factory.BeanCreationExceptionError creating bean with name 'CRUDServiceBean'Injection of persistence dependencies failednested exception is org.springframework.beans.factory.BeanCreationExceptionError creating bean with name 'entityManagerFactory' defined in class path resource [context-test.xml]: Invocation of init method failednested exception is java.lang.IllegalArgumentExceptionNo persistence unit with name 'mypersistenceunit' found
        at org
    .springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessPropertyValues(PersistenceAnnotationBeanPostProcessor.java:342)
        
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1073)
        
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:516)
        
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
        
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
        
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
        
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
        
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
        
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
        
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
        
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84)
        
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)
        
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:280)
        
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:304)
        ... 
    24 more
    Caused by
    org.springframework.beans.factory.BeanCreationExceptionError creating bean with name 'entityManagerFactory' defined in class path resource [context-test.xml]: Invocation of init method failednested exception is java.lang.IllegalArgumentExceptionNo persistence unit with name 'mypersistenceunit' found
        at org
    .springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1422)
        
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:518)
        
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
        
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
        
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
        
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
        
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findDefaultEntityManagerFactory(PersistenceAnnotationBeanPostProcessor.java:530)
        
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findEntityManagerFactory(PersistenceAnnotationBeanPostProcessor.java:496)
        
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor$PersistenceElement.resolveEntityManager(PersistenceAnnotationBeanPostProcessor.java:657)
        
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor$PersistenceElement.getResourceToInject(PersistenceAnnotationBeanPostProcessor.java:630)
        
    at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:147)
        
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
        
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessPropertyValues(PersistenceAnnotationBeanPostProcessor.java:339)
        ... 
    38 more
    Caused by
    java.lang.IllegalArgumentExceptionNo persistence unit with name 'mypersistenceunit' found
        at org
    .springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainPersistenceUnitInfo(DefaultPersistenceUnitManager.java:535)
        
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:287)
        
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:239)
        
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)
        
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1479)
        
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1419)
        ... 
    51 more 
    The JUnit Class

    Code:
    @RunWith(SpringJUnit4ClassRunner.class)
    @Configurable(autowire = Autowire.BY_NAME)
    @ContextConfiguration(locations = { "classpath:context-test.xml" })
    public class CurrencyTest {
    
    	@Autowired
    	CRUDService crudService;
    The java class:

    Code:
    @Repository
    public class CRUDServiceBean implements CRUDService {
    
    	@PersistenceContext
    	private EntityManager em;
    
    	public EntityManager getEntityManager() {
    		return em;
    	}
    context-test.xml and persistence.xml are both located in the package src/test/resources

    context-test.xml :

    PHP Code:
    <?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:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:task="http://www.springframework.org/schema/task"
           xsi:schemaLocation="http://www.springframework.org/schema/beans 
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
               http://www.springframework.org/schema/tx 
               http://www.springframework.org/schema/tx/spring-tx-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/task 
               http://www.springframework.org/schema/task/spring-task-3.0.xsd">         
               
        <context:component-scan base-package="com.stockdomain"/>
        
        <!-- Enable the configuration of transactional behavior based on annotations -->
        <tx:annotation-driven />
        
        <!-- the parent application context definition for the springapp application -->
        
        
        <!-- dataSource -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName"><value>org.postgresql.Driver</value></property>
          <property name="url"><value>jdbc:postgresql://localhost/db_finance_test</value></property>
          <property name="username"><value>xxxxx</value></property>
          <property name="password"><value>xxxxx</value></property>
        </bean>   

        <bean id="entityManagerFactory"
              class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="persistenceUnitName" value="mypersistenceunit" />
            <property name="dataSource" ref="dataSource" />
            <property name="jpaVendorAdapter">
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                    <property name="showSql" value="true" />
                    <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" />
                </bean>
            </property>
            <property name="jpaPropertyMap">
                <map>
                    <entry key="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
                </map>
            </property>
        </bean>
            
      
    </beans>
    persistence.xml :
    PHP Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <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="mypersistenceunit" transaction-type="RESOURCE_LOCAL">
        <description>De-Mail-Entity-Service Persistence Unit</description>
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
          <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
          <property name="hibernate.hbm2ddl.auto" value="create"/>
        </properties>
      </persistence-unit>    
        
    </persistence>
    Many thanks in advance,

    Marc
    Last edited by fv967; Jul 9th, 2012 at 05:39 AM. Reason: better description

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •