Spring使用;交易经理“;虽然指定了另一个

Spring使用;交易经理“;虽然指定了另一个,spring,spring-transactions,Spring,Spring Transactions,尝试使用Spring事务时出现以下错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'transactionManager' is defined: No matching PlatformTransactionManager bean found for qualifier 'transactionManager' - neither qualifier match nor be

尝试使用Spring事务时出现以下错误:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'transactionManager' is defined: No matching PlatformTransactionManager bean found for qualifier 'transactionManager' - neither qualifier match nor bean name match!
虽然我已经指定了另一个名字。下面是代码片段:

@EnableTransactionManagement
public class TransactionConfig {
...
    @Bean
    @Qualifier(value ="jpaTransactionManager")
public PlatformTransactionManager jpaTransactionManager(EntityManagerFactory emf) {
    JpaTransactionManager tm = new JpaTransactionManager();
    tm.setEntityManagerFactory(emf);
    tm.setDataSource(primaryDataSource());
    return tm;
}

    @Bean()
    @Qualifier(value="jtaTransactionManager")
    public JtaTransactionManager jtaTransactionManager(UserTransactionManager    atomikosTransactionManager) {
      ......
我是这样用的:

@Transactional(transactionManager="jpaTransactionManager")
public class UserService {

public Iterable<FVUser> findWithQuery(Specification<FVUser> spec) {
    return repository.findAll(spec);
} 
@Transactional(transactionManager=“jpaTransactionManager”)
公共类用户服务{
公共Iterable findWithQuery(规范规范){
返回repository.findAll(spec);
} 
存储库:

@Repository
public interface UserRepository extends PagingAndSortingRepository<FVUser, String>, JpaSpecificationExecutor<FVUser>  {
@存储库
公共接口UserRepository扩展了分页和排序存储库,JpaSpecificationExecutor{
调试时,我注意到它正确地使用了“jpaTransactionManger”来调用服务方法,但似乎在寻找一个“transactionManager”来调用存储库方法,尽管没有为它指定任何事务

有人知道为什么Spring在本例中寻找默认的“transactionManager”bean吗


谢谢。

我想你也应该用
@Bean
标记你的
平台TransactionManager


并在存储库中添加
@Transactional(transactionManager=“jpaTransactionManager”)
。实现默认使用@Transactional而不使用参数,因此它正在搜索默认的“transactionManager”我想你也应该用
@Bean
标记你的
平台TransactionManager


并在您的存储库中添加
@Transactional(transactionManager=“jpaTransactionManager”)
。默认情况下,实现使用@Transactional而不使用参数,这就是它搜索默认“transactionManager”的原因。在spring数据配置中解释了您应该向其添加参数的原因

@EnableJpaRepositories(transactionManagerRef = "jtaTransactionManager")

默认值是“transactionManager”

在spring数据配置中,您应该向其添加一个参数

@EnableJpaRepositories(transactionManagerRef = "jtaTransactionManager")

默认值是“transactionManager”

对不起,它是一个bean。我只是错误地跳过了它。我更新了帖子。我添加了@Transactional(transactionManager=“jpaTransactionManager”)也在存储库上,但结果相同。无论如何,我不希望存储库方法是事务性的。只是将服务方法包装在事务中。对不起,它是一个bean。我只是错误地跳过了它。我更新了帖子。我添加了@transactional(transactionManager=“jpaTransactionManager”)也在存储库上,但结果相同。无论如何,我不希望存储库方法是事务性的。只是将服务方法包装在事务中。是的。这就是修复方法。谢谢。是的。这就是修复方法。谢谢。