我一直在从事一个springboot项目,我在springdatajpa的帮助下完成了所有的数据库操作。所以我只有一些实体和一些存储库,所有的crud操作都运行良好。
但是现在,这个项目需要与两个数据库进行对话。所以我所做的是在一个单独的包中创建所有新的实体和存储库。我注意到现在我需要2个EntityManager,所以我为这两个实体管理器创建了2个配置文件,配置了一个 datasource
,安 entityManager
和一个 transactionManager
. 所以现在,我没有使用spring boot给我的1个entitymanager,而是自己创建了2个entitymanager。他们工作得很好,他们都和数据库进行了交谈。
我的问题是,我似乎已经失去了许多功能,在我的entitymanager, Spring 启动之前给我。例如,我的实体管理器不再在我的测试中基于它的实体创建模式,它以前是这样做的。除此之外,我确信我会遇到其他情况,在这些情况下我的 entityManager
不会像一个Spring Boot给我的那样正确配置。
因此,我的想法是只声明第二个实体管理器,并将第一个实体管理器的配置留空,但是这不起作用,并且 JpaBaseConfiguration
我注意到,如果您还没有entitymanager,spring只会创建一个entitymanager。
@ConditionalOnMissingBean({ LocalContainerEntityManagerFactoryBean.class,
EntityManagerFactory.class })
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
//some code that will give you an entity manager
);
鉴于我必须为第二个数据库配置第二个entitymanager,我似乎也被迫创建第一个,因为SpringBoot将跳过创建一个。
这就引出了我的问题:
我是否可以像spring boot那样配置我的第一个实体管理器?或者我可以强制spring给我那个entitymanager,即使我为第二个数据库声明了另一个entitymanager?有没有其他方法可以解决我的问题(我正在考虑对第二个数据库使用jdbctemplate,但是这有点失败:'()?
抱歉问了这么长时间。感谢您的回答!谢谢您!
暂无答案!
目前还没有任何答案,快来回答吧!