具有bean验证功能的Spring JPA存储库:错误的响应速度

时间:2018-10-05 15:08:16

标签: java spring spring-data-jpa spring-data spring-rest

我正在使用这样的模型对象:

@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控制器的情况下获得有用的错误消息?

1 个答案:

答案 0 :(得分:1)

定义Controller建议以全局处理异常,并以字符串或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 ;
    }

}