Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringData1.6.0GA无法通过自定义id找到实体管理器工厂bean_Spring_Jpa_Spring Data Jpa - Fatal编程技术网

SpringData1.6.0GA无法通过自定义id找到实体管理器工厂bean

SpringData1.6.0GA无法通过自定义id找到实体管理器工厂bean,spring,jpa,spring-data-jpa,Spring,Jpa,Spring Data Jpa,我发现了SpringData1.6.0的奇怪行为(降级的版本1.5.2没有这个问题)。这个版本似乎严格要求实体管理器工厂bean的id为“entityManagerFactory”。如果不是,则在运行TestNG测试时出现此错误: 原因:org.springframework.beans.factory.BeanCreationException:创建名为“jpamappingContext”的bean时出错:设置bean属性“entityManager”时无法创建[org.springfram

我发现了SpringData1.6.0的奇怪行为(降级的版本1.5.2没有这个问题)。这个版本似乎严格要求实体管理器工厂bean的id为“entityManagerFactory”。如果不是,则在运行TestNG测试时出现此错误:

原因:org.springframework.beans.factory.BeanCreationException:创建名为“jpamappingContext”的bean时出错:设置bean属性“entityManager”时无法创建[org.springframework.orm.jpa.SharedentityManager]类型的内部bean(内部bean)35b87404”;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“(内部bean)#36b87404)的bean时出错:设置构造函数参数时无法解析对bean“entityManagerFactory”的引用;嵌套异常为org.springframework.beans.factory.NoSuchBean定义异常:未定义名为“entityManagerFactory”的bean

我的配置是:

<!-- ************************************************************** -->
<!-- Database configuration                                     -->
<!-- ************************************************************** -->    

  <!-- Entity manager factory bean -->
    <bean id="entityManagerFactoryCustomId"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="test-system" />
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan">
            <array>
                <value>${pds.db.scan.model}</value>
            </array>
        </property>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">${jdbc.dialect}</prop>
                <prop key="hibernate.show_sql">${jdbc.showsql}</prop>
                <prop key="hibernate.format_sql">${jdb.formatsql}</prop>
                <prop key="hibernate.hbm2ddl.auto">${jdbc.hbm2ddl.auto}</prop>
            </props>
        </property>
    </bean>

  <!-- C3P0 connection pool -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <!-- Connection properties -->
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <!-- Pool properties -->
        <property name="minPoolSize" value="${pool.minsize}" />
        <property name="maxPoolSize" value="${pool.maxsize}" />
        <property name="initialPoolSize" value="${pool.initialPoolSize}" />
        <property name="maxStatements" value="${pool.maxstatements}" />
        <property name="acquireIncrement" value="${pool.acquireincrement}" />
        <property name="preferredTestQuery" value="${jdbc.check}" />
        <property name="numHelperThreads" value="${pool.threads}" />
    </bean>

    <!-- JPA transaction manager -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactoryCustomId" />
    </bean>

  <!-- Activate Spring Data JPA repository support -->
    <jpa:repositories base-package="pds.archiva.db.repository" />
</code>

正如我所写的,相同的测试只适用于更改spring.data-jpa.version=1.5.2.RELEASE。。。或者将bean的id更改为“entityManagerFactory”而不是“entityManagerFactoryCustomId”。

刚刚添加了@StéphaneNicoll答案:
然后显式设置实体管理器(请参阅jpa:repositories中的实体管理器工厂refelement。文档可能已过时。

您尚未定义id为
entityManagerFactory
的bean,然后显式设置实体管理器(请参见
中的
实体管理器工厂参考
元素。看起来像@Stéphanenicol谢谢,我在编辑和升级到新版本时错过了添加实体管理器工厂参考;-)
spring.framework.version = 4.0.5.RELEASE
spring.security.version = 3.2.4.RELEASE
spring.data-jpa.version = 1.6.0.RELEASE