Явно указать свойства сортировки - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь реализовать разбиение на страницы и сортировку 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 существует более простой способ сортировки только по явно заданным свойствам.

1 Ответ

0 голосов
/ 26 марта 2019

Для создания страницы, которая сортирует найденные элементы только по id и name, вы можете использовать следующий фрагмент или, другими словами, получить доступ к хранилищу, например:

Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by("id", "name"));
itemsRepository.findAll(pageable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...