下面是我在spring配置类中创建的transactionManager。
@Bean(name = "dataSourceTXMgr")
public PlatformTransactionManager getTransactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "jpaTXMgr")
public JpaTransactionManager transactionManager(LocalContainerEntityManagerFactoryBean factory) throws ClassNotFoundException
{
System.out.println("JPA");
return new JpaTransactionManager(factory.getObject());
}
但是在调用下面的方法时会遇到异常 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为'transactionManager'的bean
@Transactional(value = "jpaTXMgr")
public Staff find(String userId, String password) {
Staff staff = staffRepository.findOne(userId);
return staff;
}
@EnableTransactionManagement已在我的spring配置类中应用。请让我知道缺少什么
答案 0 :(得分:0)
假设您正在使用' EnableJpaRepositories'注释,使用它来设置您要使用的事务管理器。有关详细信息,请参阅其文档:https://docs.spring.io/spring-data/data-jpa/docs/current/api/org/springframework/data/jpa/repository/config/EnableJpaRepositories.html#transactionManagerRef--
正在发生的事情是:当您在' @Transactional'中指定自己的交易管理器时注释存储库带有自己的隐式注释。所以它基本上是在两个交易中运行,其中一个交易失败。