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
Hibernate 未定义类型为[javax.persistence.EntityManagerFactory]的唯一bean:应为单个bean,但找到2个_Hibernate_Spring_Jpa - Fatal编程技术网

Hibernate 未定义类型为[javax.persistence.EntityManagerFactory]的唯一bean:应为单个bean,但找到2个

Hibernate 未定义类型为[javax.persistence.EntityManagerFactory]的唯一bean:应为单个bean,但找到2个,hibernate,spring,jpa,Hibernate,Spring,Jpa,我正在为两个不同的数据库定义两个EntityManagerbean。每个EntityManagerbean都引用在persistence.xml中定义的唯一的、各自的 同样的代码和配置在Spring2.x上运行良好。当我升级到Spring 3时,在服务器中部署应用时,我看到以下异常: 原因:org.springframework.beans.factory.NoSuchBean定义异常:未定义类型为[javax.persistence.EntityManagerFactory]的唯一bean:预

我正在为两个不同的数据库定义两个
EntityManager
bean。每个
EntityManager
bean都引用在
persistence.xml
中定义的唯一的、各自的

同样的代码和配置在Spring2.x上运行良好。当我升级到Spring 3时,在服务器中部署应用时,我看到以下异常:

原因:org.springframework.beans.factory.NoSuchBean定义异常:未定义类型为[javax.persistence.EntityManagerFactory]的唯一bean:预期为单个bean,但找到2个

有人面对过这个问题吗?升级到Spring 3时我是否遗漏了什么? 我非常感谢您的回复

我将Spring3与Hibernate和JPA一起使用

问题不在于含糊不清;我声明了两个
EntityManagerFactory
bean,并按如下方式注入它们:

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

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

按如下方式注入EntityManager:

@PersistenceContext(unitName = "unit1")
private EntityManager entityManager;
@PersistenceUnit(unitName = "unit1")
private EntityManagerFactory entityManagerFactory;
或者您的EntityManagerFactory如下所示:

@PersistenceContext(unitName = "unit1")
private EntityManager entityManager;
@PersistenceUnit(unitName = "unit1")
private EntityManagerFactory entityManagerFactory;

(您可能需要在您的上下文中使用它)

在某个地方,您有一个类型为
org.springframework.flex.core.io.JpaHibernateConfigProcessor
的bean,它看起来有一个init方法,可以自动连接到
javax.persistence.EntityManagerFactory
。因为有两个,它失败了。它可能是在XML中明确声明的,比如:

<bean class="org.springframework.flex.core.io.JpaHibernateConfigProcessor"/>

注意,没有id属性,因此长bean名称以“#0”结尾


编辑:仔细想想,该类的名称看起来像某种在ApplicationContext启动时运行的bean处理器,因此它可能是由自定义spring命名空间元素或其他机制创建的。

我的问题解决了。SpringFlexCore库是罪魁祸首。我使用的1.5.0.M1版本不允许多个EntityManagerFactory。当我使用1.5.0.RELEASE时,错误消失了

你必须先做所有的事情,比如定义 数据源 eventManagerFactory 交易经理 persistenceUnits(必须在单独的persistence.xml文件中)等 然后编译它就可以了 另外,不要忘记在baseDao类中添加注释
作为@applicationContext(unitName=“example”)

在哪里引用这个bean?您在询问EntityManagerFactory类型的bean时是否含糊不清?您应该将此信息添加到问题中,而不是发布注释。配置代码段显示了工厂正在使用的两个位置。我打赌还有第三个。向我们显示完整的错误消息,其中包括由于此问题而无法创建的bean。Sean,我们没有使用注释来注入依赖项。我们在配置文件中执行此操作,是的,我们在传递引用时提供entityManagerFactory名称。因此,thr不应含糊不清。