JPA javax.persistence.TransactionRequiredException with@Transactional with 2个数据源

JPA javax.persistence.TransactionRequiredException with@Transactional with 2个数据源,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,我试图从一个数据源(A)读取数据,并将该数据源(A)中的数据写入另一个数据源(B)。我通过注释设置了所有JavaSpring5bean,因为我需要创建占位符数据源,并在运行时提供登录详细信息 我已经设置了2个LocalContainerEntityManagerFactoryBeans(使用数据源A和B)和一个JpaTransactionManager(B),将此事务管理器称为“tm”-全部命名为 我的刀里有 @Transactional('tm') @Repository public int

我试图从一个数据源(A)读取数据,并将该数据源(A)中的数据写入另一个数据源(B)。我通过注释设置了所有JavaSpring5bean,因为我需要创建占位符数据源,并在运行时提供登录详细信息

我已经设置了2个LocalContainerEntityManagerFactoryBeans(使用数据源A和B)和一个JpaTransactionManager(B),将此事务管理器称为“tm”-全部命名为

我的刀里有

@Transactional('tm')
@Repository
public interface SomeDao extends JpaRepository<SomeModel, Long> {
    @Query("select soemthing something...")
    List<SomeModel> getter(Somefields foobar);

    @Modifying
    @Query("insert something something...")
    void insert(Somefields morestuff);
显然,它的加载很好,因为我可以运行getter并从数据源A获取正确的数据。当我尝试使用insert方法时——理想情况下,我想写入数据源B,它只会抛出一个javax.persistence.TransactionRequiredException。即使没有insert并使用我的DAO继承的crudepository.save(对象),它也不会插入到数据库中,调用my DAO.flush()也会抛出无事务进行中


调用@Transactional('tm')是否不会自动创建一些事务?我不明白为什么不管我怎么做都会出现这个错误。我甚至可以用这两个EntityManager和jpatransaction Manager处理各种数据源吗?

下面有帮助吗?您只是错误配置了TransactionManager我没有错误配置,这是因为我在运行时设置了数据源,这意味着JpaTransactionManager尽管给了EntityManagerFactory,但在创建bean时从中获得了EntityManager并继续使用它。
@Configuration
@EnableJpaRepositories(
    entityManagerFactoryRef = "A",
    transactionManagerRef = "B"
)