Spring使用;交易经理“;虽然指定了另一个
尝试使用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
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”)也在存储库上,但结果相同。无论如何,我不希望存储库方法是事务性的。只是将服务方法包装在事务中。是的。这就是修复方法。谢谢。是的。这就是修复方法。谢谢。