我正在使用这样的模型对象:
@Entity
public class Address {
@Id
@GeneratedValue
private long id;
@NotNull
@Size(min = 1, max = 20)
private String location;
@OneToOne(mappedBy = "address")
private Person person;
}
使用存储库
@RepositoryRestResource(collectionResourceRel = "address", path = "address")
public interface AddressRepository extends PagingAndSortingRepository<Address, Long> {
}
当我尝试发布一个破坏 bean 约束的对象时,我得到的错误响应很差:
{"时间戳":">2018-10-05T14:48:23.667+0000","状态":500,"错误":"内部 服务器错误","消息":"无法提交 JPA 事务;嵌 套 异常是 javax.persistence.RollbackException: 错误时 提交事务","路径":"/地址"}
如何在不自己实现每个 rest 控制器的情况下获得有用的错误消息?
定义控制器建议以全局处理异常,并将自定义消息作为字符串或ErrorResponse
对象返回(您可以在其中定义自己的属性(。
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RollbackException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public String handleRollbackException(RollbackException ex) {
String errorMessage = "Your custom message";
return errorMessage ;
}
}