Я новичок в Spring boot 2.X, но пытаюсь реализовать Rollback, когда происходит ошибка. Этот вопрос относится к транзакции Spring и откату на нескольких таблицах . Я пытался сделать это, но у меня не получилось. Я вручную добавил RuntimeException
для проверки в двух сервисах. Но это не работает, что означает, что он создает User
, но не company
коллекцию. Я пытался изменить propagation=Propagation.REQUIRES_NEW
, REQUIRED
также
Репозитории
public interface UserRepository extends MongoRepository<User,String> {}
public interface CompanyRepository extends MongoRepository<Company,String> {}
Сервисы
public interface UserService{
User save(User user);
}
public interface CompanyService {
Company addCompany();
Company save(Company company);
}
Реализации сервиса
@Service
public class UserServiceImpl implements UserService{
@Autowired
UserRepository userRepository;
@Override
public User save(User user) {
return userRepository.save(user);
}
}
@Service
public class CompanyServiceImpl implements CompanyService{
@Autowired
CompanyRepository companyRepository;
@Autowired
UserService userService;
@Transactional(propagation=Propagation.REQUIRES_NEW)
@Override
public Company addCompany() {
User user=new User();
user.setFirstname("Nisha");
user.setLastname("Kara");
User savedUser=userService.save(user);
if(user.getFirstname().equals("Nisha"))
throw new RuntimeException("Runtime Error");
Company company=new Company();
company.setName("ABC");
company.setUser(user);
Company savedCompany=save(company);
return savedCompany;
}
@Override
public Company save(Company company) {
return companyRepository.save(company);
}
}
Заранее спасибо.
Обновление 1 : я использую пн go дБ версии 4.2.1