Как я могу обработать исключения с помощью Spring Data Rest и PagingAndSortingRepository?

Допустим, у меня есть хранилище вроде:

public interface MyRepository extends PagingAndSortingRepository<MyEntity, String> {

    @Query("....")
    Page<MyEntity> findByCustomField(@Param("customField") String customField, Pageable pageable);
}

Это прекрасно работает. Однако если клиент отправляет сформированный запрос (скажем, ищет в поле, которое не существует), Spring возвращает исключение в виде JSON. Выявление@Query, и т.д.

// This is OK
http://example.com/data-rest/search/findByCustomField?customField=ABC

// This is also OK because "secondField" is a valid column and is mapped via the Query
http://example.com/data-rest/search/findByCustomField?customField=ABC&sort=secondField

// This throws an exception and sends the exception to the client
http://example.com/data-rest/search/findByCustomField?customField=ABC&sort=blahblah

Пример исключения, сгенерированного и отправленного клиенту:

{
    message:null,
    cause: {
        message: 'org.hibernate.QueryException: could not resolve property: blahblah...'
    }
}

Как я могу обработать эти исключения? Обычно я использую@ExceptionHandler для моих контроллеров MVC, но я не использую слой между Data Rest API и клиентом. Нужно ли мне?

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос