交易+ AbstractRoutingDataSource +的EntityManager

时间:2017-10-31 01:25:39

标签: spring jpa entitymanager

我有两个不同的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”