我有两个不同的PlatformTransactionManager数据源,LocalContainerEntityManagerFactoryBean
我有RoutingDataSource类,它扩展了org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource,以便为每个PlatformTransactionManager路由正确的数据源。
我已经使用了经理方法 org.springframework.transaction.annotation.Transactional as @Transactional(value =“reportingDatasource”)
我的Repository中有javax.persistence.EntityManager声明来执行一些查询。
该EntityManager声明期望PersistenceContext具有如下所述的unitName来标识不同的数据源。有没有办法使用一个EntityManager声明,其中Transactional将根据指定的值路由到预期的数据源
@PersistenceContext(的unitName = “主”) 私有EntityManager em;
@PersistenceContext(的unitName = “reporing”) private EntityManager reportEm;
如果我没有指定unitName,则抛出此错误“没有类型'javax.persistence.EntityManagerFactory'的限定bean可用:预期单个匹配bean但找到2”
答案 0 :(得分:0)
我认为它应该是2个EntityManager和一个chainedTransactionManager以实现最佳效果1 PC
Spring - Is it possible to use multiple transaction managers in the same application? https://jira.spring.io/browse/SPR-3955 Implementing Spring ChainedTransactionManager according to the "best efforts 1PC" pattern