在Spring中为持久性单元使用不同的数据源

时间:2011-05-23 19:03:15

标签: hibernate spring jpa persistence-unit

好的,我是新来的。我想要做的是说“这些类在这里持久存在(数据库a),并且这些类在那里(数据库b)”。我认为我应该在不同的持久性单元组下明确定义类,它们还可以包含带有驱动程序信息的属性集合。

<persistence-unit name="nytdModel" transaction-type="RESOURCE_LOCAL">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
  <class>gov.vermont.dcf.nytd.model.AbstractElementImpl</class>
  ...
  <exclude-unlisted-classes>true</exclude-unlisted-classes>
  <properties>
    <property name="hibernate.connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver"/>
    <property name="hibernate.connection.url" value="jdbc:jtds:sqlserver://localhost;..."/>
    <property name="hibernate.connection.username" value="..."/>
    <property name="hibernate.connection.password" value="..."/>
  </properties>
</persistence-unit>

然后在我的Dao课程中,我应该提供上下文:

@Repository
public class AFCARSJpaDao
{
    @PersistenceContext(unitName = "nytdModel")
    private EntityManager entityManger;
}

但是,我收到No unique bean of type [javax.persistence.EntityManagerFactory] is defined: expected single bean but found 2错误。我做错了什么?

我正在使用Spring 3.0.4

1 个答案:

答案 0 :(得分:2)

看起来你试图在某处EntityManagerFactory注入@Autowired

始终使用@PersistenceContext注入EntityManager@PersistenceUnit来注入EntityManagerFactory,他们应该正确处理多个持久性单元的情况(如果指定unitName他们的属性)。