У меня есть класс обработчика событий следующим образом:
@Component
@RepositoryEventHandler(DonationOffer.class)
public class DonationOfferEventHandler {
@Autowired
DonationOfferNotificationService notificationService;
@HandleAfterSave
public void handleAfterSave(DonationOffer donationOffer){
Integer donationOfferId = donationOffer.getDonationOfferId();
System.out.println("updating donation offer");
switch (donationOffer.getOfferStatus()){
case Accepted:
notificationService.generateAcceptedNotification(donationOfferId);
break;
case Rejected:
notificationService.generateRejectedNotification(donationOfferId);
break;
case Cancelled:
notificationService.generateCancelledNotification(donationOfferId);
break;
}
}
}
И пружинное репо выглядит следующим образом:
@Transactional
public interface DonationOfferRepo extends PagingAndSortingRepository<DonationOffer,Integer>{
@Modifying
@Query(
"update DonationOffer d " +
"set offerStatus = :offerStatus " +
"where d.donationOfferId = :donationOfferId"
)
@RestResource(path="updateStatus")
int updateStatus(
@Param("donationOfferId") Integer donationOfferId,
@Param("offerStatus") OfferStatus offerStatus
);
}
Обработчик события вызывается в случае запроса PUT, проблема в том, чтоМетод @HandleAfterSave не вызывается, когда я вызываю updateStatus (), т. Е.
a get request to /api/donationOffers/search/updateStatus?donationOfferId=45&offerStatus=Cancelled
Может ли кто-нибудь помочь, если я что-то упустил или это поведение по умолчанию, что @HandleAfterSave будет вызываться только с запросом PUT?
ОБНОВЛЕНИЕ: я создал метод для проверки обработчика событий с помощью метода сохранения репозитория следующим образом.Обработчик событий в этом случае также не вызывается.
@GetMapping(value="/savetest")
@Transactional
public ResponseEntity saveTesT(){
DonationOffer donationOffer = donationOfferRepo.findOne(1);
donationOffer.setOfferedBottles(donationOffer.getOfferedBottles()+1);
donationOfferRepo.save(donationOffer);
return new ResponseEntity(new StringWrapper("OK"), HttpStatus.OK);
}