Я использую Spring Data REST с Spring Boot 1.5.16, и в моем проекте есть следующие объекты:
Atoll.class
@Data
@Entity
public class Atoll {
@Id
@GeneratedValue
private long id;
private String atollName;
}
ErrorLog.class
@Data
@Entity
public class ErrorLog {
@Id
@GeneratedValue
private long id;
private String errorMessage;
public ErrorLog() {
}
public ErrorLog(String errorMessage) {
this.errorMessage = errorMessage;
}
}
У меня также есть следующий RepositoryEventHandler для класса Atoll.Для цели вопроса я просто выбрасываю здесь исключение.
@Component
@RepositoryEventHandler
public class AtollHandler {
@HandleBeforeSave
public void handleBeforeSave(Atoll atoll){
if(true){
throw new ResourceNotFoundException("A");
}
}
}
Когда я отправляю запрос PATCH на atolls/1
, регистрируется исключение во время выполнения, однако сущность Atoll все еще обновляется.Так что я делаю не так?
Я нашел несколько похожих вопросов, таких как этот , но у него нет правильного объяснения, почему это происходит
Примечание: у меня также естькласс обработчика исключений Rest, который записывает журналы ошибок в базу данных.Когда я закомментирую часть кода, записывающую журнал ошибок, сущность atoll не обновляется, когда возникает исключение времени выполнения
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {
@Autowired
ErrorLogRepository errorLogRepository;
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<?> handleResourceNotFoundException(ResourceNotFoundException rnfe, HttpServletRequest request) {
ErrorLog errorLog = new ErrorLog(rnfe.getMessage());
errorLogRepository.save(new ErrorLog(rnfe.getMessage()));
return new ResponseEntity<>(errorLog, null, HttpStatus.NOT_FOUND);
}
}