【发布时间】:2019-03-06 18:14:17
【问题描述】:
我正在将 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;
}
}
我还有以下用于 Atoll 类的 RepositoryEventHandler。出于这个问题的目的,我只是在这里抛出一个异常。
@Component
@RepositoryEventHandler
public class AtollHandler {
@HandleBeforeSave
public void handleBeforeSave(Atoll atoll){
if(true){
throw new ResourceNotFoundException("A");
}
}
}
当我向atolls/1 发送 PATCH 请求时,会记录运行时异常,但 Atoll 实体仍会更新。那我做错了什么?
我发现了一些类似的问题,例如this one,但它没有正确解释为什么会发生这种情况
注意:我还有一个将错误日志写入数据库的 Rest Exception 处理程序类。当我注释掉错误日志编写部分代码时,发生运行时异常时环礁实体不会得到更新
@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);
}
}
【问题讨论】:
标签: java spring-boot spring-data spring-data-rest