У меня есть 2 источника данных, DS1, DS2.В одном сервисе @Transactional мне нужно получить значения из двух таблиц и обновить их.
Пример фрагмента
@Service
public class MyService {
@Autowired
ds1Repository ds1Repository; // from data source 1 (DB Name - DB1) MYSQL
@Autowired
ds2Repository ds2Repository; // from data source 2 (DB Name - DB2) MYSQL
@Transactional (javax.Transactional)
public void processUpdates() {
// Able to get the result set from both the data sources
List<Data1> ds1Data = ds1Repository.findAll();
List<Data2> ds2Data = ds1Repository.findAll();
// modified the collections ds1Data & ds2Data
// This is getting updated
ds1Repository.saveAll(ds1Data);
// This update is not heppening and no exception thrown
ds2Repository.saveAll(ds2Data);
}
}
Я пробовал следующие wys:
- Я настроил оба источника данных, которые работают нормально, в состоянии читать данные из обеих баз данных
- После поиска попытался ChainedTransactionManager, определив настраиваемые имена диспетчера транзакций для обоих источников данных и использовал @Transactional(value = "chainedTransactionManager") поверх сервиса.Все равно не сработало.
Может кто-нибудь помочь мне с тем, что было в коде?почему данные только на источнике данных 2 не сохраняются?