У меня проблема с моим приложением Spring-Boot. Я пытаюсь отправить уведомление после того, как получу результат от своей функции с @Transactional, но @Transactional не работает, откат не работает. Это код.
@Service
public class ParkingServiceImpl implements ParkingService {
@Override
public void getParkingFromBOAsyncWrapper() {
ArrayList<BOUserParking> listUserParkingfromBO = getParkingFromBOTransaction();
/** Send notification **/
if (listUserParkingfromBO!=null){
notificationService.sendNotification(listUserParkingfromBO);
}
}
@Transactional
@Override
public ArrayList<BOUserParking> getParkingFromBOTransaction() {
// .... insert or update on db
}
}




Транзакционный не будет работать, если вызывается в том же классе. Транзакционный (и аналогичный, например, Async) работает через создание прокси между вызывающими классами. Вы должны вызвать его из другого класса, чтобы получить транзакционную функциональность.
Я бы переместил ваши вызовы DAO в RespositoryService, который обрабатывает транзакции.
Поместите аннотацию @Transactional внутри метода класса DAO, а не в класс.