2012-10-04 47 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!

相關問題