Как работает карта данных из Page из Spring? - PullRequest
0 голосов
/ 16 марта 2020

Как видно из заголовка, как map из org.springframework.data.domain.Page работает?

Согласно документации, предлагается, чтобы вы добавили конвертер в качестве карты параметр, и вы получите новую карту с преобразованным содержимым. Согласно этой интерпретации, я написал код для чего-то следующего:

Page<T> results = getPagedResults();
return results.map(x -> {
  x.setElement("some constant");
  return x;
});

Однако вышеприведенное не сработало, как ожидалось. Я получил страницу со всеми остальными значениями, такими как count и так далее, но содержимое было пустым списком! Я действительно должен был написать код таким образом.

Page<T> results = getPagedResults();
return new Page<T>() {
  @Override
  public int getTotalPages() {
    return results.getTotalPages();
  }

  ...

  @Override
  public List<T> getContent() {
    List<T> contents = result.getContent();
    for (T content : contents) {
      content.setElement("some constant");
    }
    return contents;
  }

  ...
};

Второй вариант - многословный и, похоже, выполняет избыточную работу. Я ожидал, что первый кусок кода будет делать то же самое, но это не так.

Я неправильно читаю документацию? И где бы вы использовали функцию карты Пейджа, если она не должна использоваться, как я ее использовал?

1 Ответ

0 голосов
/ 16 марта 2020

Как насчет установки реального конвертера, как показано ниже:

        Page<T> results = getPagedResults();
        Page<T> convertedResults = results.map(new Converter<T, T>() {
            @Override
            public T convert(T page) {
                Page page2 = new Page();
                page2.setElement('some constant');
                //set other fields

                return page2;
            }
        });
...