
我需要从一个应用程序连接到两个不同的数据库.问题是我的appEntityManager没有与之关联的事务管理器,我不知道该怎么做. @Primary adminEntityManager能够使用spring boot提供的那个,没有任何问题,如here所述.
The configuration above almost works on its own. To complete the
picture you need to configure TransactionManagers for the two
EntityManagers as well. One of them Could be picked up by the default
JpaTransactionManager in Spring Boot if you mark it as @Primary. The
other would have to be explicitly injected into a new instance. Or you
might be able to use a JTA transaction manager spanning both.
我已经注释了配置
@EnableTransactionManagement这是相关的豆子
@Bean@ConfigurationPropertIEs(prefix = "datasource.app")public DataSource appDataSource() { return DataSourceBuilder.create().build();}@Bean@Primary@ConfigurationPropertIEs(prefix = "datasource.admin")public DataSource adminDataSource() { return DataSourceBuilder.create().build();}@Beanpublic LocalContainerEntityManagerfactorybean appEntityManagerFactory( final EntityManagerFactoryBuilder builder) { return builder .dataSource(appDataSource()) .packages("au.com.mycompany.app.bomcommon.domain") .persistenceUnit("appPersistentUnit") .build();}@Bean@Primarypublic LocalContainerEntityManagerfactorybean adminEntityManagerFactory( final EntityManagerFactoryBuilder builder) { return builder .dataSource(adminDataSource()) .packages("au.com.mycompany.app.bombatch") .persistenceUnit("adminPersistentUnit") .build();}//I thought this would do it but I am getting an exception//No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined: expected single matching bean but found 2: appTransactionManager,transactionManager@Beanpublic JpaTransactionManager appTransactionManager(@QualifIEr("appEntityManagerFactory") final EntityManagerFactory emf) { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(emf); return transactionManager;}更新
我最后以不同的方式做到了这一点. see here.最佳答案看看这是否有效:
@Bean@Primary@ConfigurationPropertIEs(prefix = "datasource.admin")public DataSource adminDS() { ... }@Bean@Primarypublic LocalContainerEntityManagerfactorybean adminEMF(...) { ... }@Bean@Primarypublic JpaTransactionManager adminTM(...) { ... }@Beanpublic LocalContainerEntityManagerfactorybean appEMF(...) { ... }@Beanpublic JpaTransactionManager appTM(...) { ... }我对您的配置进行的唯一更改是明确声明管理端的事务管理器,并将该事务管理器标记为默认值. 总结
以上是内存溢出为你收集整理的Spring Boot中的多个事务管理器,用于不同的EntityManagers全部内容,希望文章能够帮你解决Spring Boot中的多个事务管理器,用于不同的EntityManagers所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)