Я пытаюсь реализовать разбиение на страницы и сортировку HTTP-запроса с помощью Springable Pageable. Все работает отлично, за исключением того, что я хотел бы явно указать сортируемые свойства, то есть ресурс имеет свойства id
, name
, created
.
Реализация по умолчанию позволяет пользователям вызывать HTTP-запрос и сортировать результаты по всем свойствам. Однако я хотел бы ограничить сортировку только столбцами id
и name
.
Ниже приведен пример моего текущего кода
@GetMapping("/items")
public Page<ItemDto> getItems(Pageable pageable) {
return itemsRepository.findAll(pageable).map(itemsMapper::toItemDto);
}
Очевидным решением было бы извлечь объект Sort
из Pageable
и проверить свойства вручную, как это
@GetMapping("/items")
public Page<ItemDto> getItems(Pageable pageable) {
pageable.getSort().forEach(order -> {
if (!StringUtils.equalsAnyIgnoreCase(order.getProperty(), "id", "code") {
// throw exception
}
}
return itemsRepository.findAll(pageable).map(itemsMapper::toItemDto);
}
У меня вопрос, если в Spring существует более простой способ сортировки только по явно заданным свойствам.