Из метода callAndUpdateInB (). Предположим, я вызываю метод update () класса B (@Component), в котором я вызываю метод myRepository.save () для обновления некоторых данных в db, и в той же функции я я выполняю некоторые другие вызовы ... а затем возвращаю ответ обратно в класс A.
Итак, проблема в том, что данные обновляются в базе данных, когда метод update () класса B возвращает ответ обратно методу класса A callAndUpdateInB ( ). Но он должен был обновить его, когда я вызвал myRepository.save () в методе обновления класса B ().
Почему так?
Для справки просто посмотрите этот фиктивный пример
class A{
@Autowired
B b;
public void callAndUpdateInB(String arg){
String data = b.update(arg);
// check Updates in Db (True)
// Now data is updated in db
}
}
@Component
class B{
@Transactional(
propagation = Propagation.REQUIRED
)
public String update(String arg){
MyRepository myRepository; // This is abstract class having
// imlementation for the following
// data. (MyRepositoryImpl)
String updatedData = myRepository.save(arg);
// check Updates in Db (False)
// Making some other calls, which need that updated data
// But data is not still updated in db.
// Though here the updated data field is showing that the data is updated, but it
// is not actually updated in the db.
return updatedData;
}
}