springboot+mongodb @Transactional事务 方法调用另一个查询方法报错Transaction is not active
时间: 2023-11-28 09:44:44 浏览: 95
SpringBoot内部调用事务不起作用问题的解决方案
根据提供的引用内容,可以得知在使用SpringBoot和MongoDB时,如果使用@Transactional注解开启事务,调用另一个查询方法时会报错Transaction is not active。这是因为在事务中调用另一个方法时,事务并没有传递到另一个方法中,所以需要在调用的方法上也加上@Transactional注解,以便将事务传递下去。
以下是一个示例代码:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private MongoTemplate mongoTemplate;
@Override
@Transactional
public void updateUser(User user) {
mongoTemplate.save(user);
queryUser(); // 调用另一个查询方法
}
@Transactional
public void queryUser() {
// 查询用户
}
}
```
在上面的示例代码中,updateUser方法和queryUser方法都加上了@Transactional注解,这样在updateUser方法中调用queryUser方法时,事务就能够传递下去,避免了Transaction is not active的错误。
阅读全文