2012-10-04 48 views
0

我们需要使用JPA将记录插入到两个数据源中。使用jpa + hibernate + spring在两个数据库中插入记录

这个问题的正确方法是什么?

我们如何可以声明不同的持久性单位不同数据源和管理两个实体管理器和与默认单位名称默认的持久化上下文没有在第一数据源泛型DAO提的单位名称,并覆盖使用单位名称的上下文注入在第二个数据源中的其他表中单独使用dao。

春天的文档是非常有限的,没有例子。

例子会有很大的帮助。

+0

它们在每个数据源上是相同的记录/表格吗? –

+0

不,他们是不同的记录..但是一张桌子有另一个使用的ID。他们是遗留表格..所以没有空间修改那里 –

+0

注入持久依赖失败;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义[javax.persistence.EntityManagerFactory]类型的唯一bean:期望的单一bean但找到了2 –

回答

0

使用

<bean class="..." primary="true" /> 

@Primary如果您使用的注解。

这将表明一个实例是您定义多个不同实例(如EntityManagerFactory)的类型的“默认”实例。

+0

\t \t <属性名= “persistenceUnitManager” REF = “PUM”/> \t \t <属性名= “persistenceUnitName来” 值= “侦听器”/ > \t \t <属性名= “jpaVendorAdapter” REF = “jpaHibernateAdapter”/> \t \t \t <豆ID = “otherEntityManagerFactory” \t \t类= “...” \t \t懒惰-i的尼特= “假”> \t \t <属性名= “persistenceUnitManager” REF = “pum2”/> \t \t <属性名= “persistenceUnitName来” 值= “LISTENER2”/> \t \t <属性名= “jpaVendorAdapter” ref =“jpaHibernateAdapter”/> \t –

0

如果按照本教程中,http://javacodegeeks.blogspot.com/2010/05/jboss-42x-spring-3-jpa-hibernate.html可以进行以下更改访问两个不同的数据库:

的persistence.xml,界定第二pesristence单位为你的第二个数据库。 spring.xml,用不同的名称定义第二个entityManagerFactory bean,可以说“entityManagerFactoryDB2”并将其配置为使用第二个数据库的持久单元。 每一个DAO要访问第二数据库包括以下内容:

@Autowired 
private EntityManagerFactory entityManagerFactoryDB2; 


@PostConstruct 
public void init() { 
    super.setEntityManagerFactory(entityManagerFactoryDB2); 
} 

这就是所有!

在春季服务班上,像往常一样使用DAO!

相关问题