Spring Data Pagination возвращает неверное количество контента по запросу - PullRequest
0 голосов
/ 30 декабря 2018

В настоящее время я разрабатываю API, который использует Spring Data Pagination, и я столкнулся с проблемой, что я передаю объект Pageable в качестве запроса в мой репозиторий, с какой страницей я хочу получить и сколько элементов должно быть на ней.И с этим мой объект выглядит так: Pageable pageable = PageRequest.of(0, 2); - поэтому я хочу первую страницу с двумя элементами.В моей базе данных 3 объекта, поэтому будет 2 страницы.Но вот что мне показывает идея: скриншот .Может кто-нибудь сказать мне, почему он показывает, что контент представляет собой массив из 3 элементов, но на самом деле я попросил 2 элемента?

   @Override
public List<NotificationDto> getLast30NotificationsFor(ApplicationUser user) {
    Pageable pageable = PageRequest.of(0, 2);
    Page<Notification> first30ByOwnerIdOrderByCreatedAtDesc = notificationRepository.findFirst30ByOwnerIdOrderByCreatedAtDesc(user.getId(), pageable);

    List<Notification> notifications = new ArrayList<>(first30ByOwnerIdOrderByCreatedAtDesc.getContent());
    return notifications.stream()
            .map(NotificationToDtoMapper::map)
            .collect(toList());
}

1 Ответ

0 голосов
/ 30 декабря 2018

Попробуйте:

@Override
public List<NotificationDto> getLast30NotificationsFor(ApplicationUser user) {
    Pageable page = PageRequest.of(0,2, Sort.by("createdAt").descending());
    return notificationRepository.findByOwnerId(user.getId(), page)
    .getContent()
    .stream()
    .map(NotificationToDtoMapper::map)
    .collect(toList());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...