Lassen Sie uns sagen, ich habe ein Repository wie:Wie kann ich Ausnahmen mit Spring Data Rest und dem PagingAndSortingRepository behandeln?
public interface MyRepository extends PagingAndSortingRepository<MyEntity, String> {
@Query("....")
Page<MyEntity> findByCustomField(@Param("customField") String customField, Pageable pageable);
}
Dies funktioniert gut. Wenn der Client jedoch eine gebildete Anforderung sendet (z. B. nach einem Feld sucht, das nicht existiert), gibt Spring die Ausnahme als JSON zurück. Aufdecken der @Query
usw.
// 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
Ein Beispiel für die Ausnahme an den Client geworfen und gesendet:
{
message:null,
cause: {
message: 'org.hibernate.QueryException: could not resolve property: blahblah...'
}
}
Wie kann ich diese Ausnahmen zu behandeln? Normalerweise verwende ich die @ExceptionHandler
für meine MVC-Controller, aber ich verwende keine Schicht zwischen der Data Rest API und dem Client. Sollte ich?
Danke.
Link zum Tutorial fehlt –