Сериализация CassandraPageRequest - PullRequest
0 голосов
/ 12 июня 2018

Я использую spring-data-cassandra в своем проекте и хочу обеспечить функциональность, аналогичную нумерации страниц (без произвольного доступа, без выбора конкретной страницы - просто прямая выборка).Я могу добиться этого эффекта с помощью метода, описанного в этом PR:

https://github.com/spring-projects/spring-data-cassandra/pull/114

Однако я хочу сериализовать объект Pageable, возвращаемый функцией Slice.nextPageable(), чтобы раскрыть эту функциональность поверхИнтерфейс REST.Это возможно?

1 Ответ

0 голосов
/ 13 июня 2018

Решение состоит в том, чтобы принудительно привести приведенный объект Pageable к CassandraPageRequest, а затем использовать .getPagingState для получения требуемого объекта.После сериализации можно создать PagingState обратно из строки и добавить размер страницы для создания PageRequest.Вроде сложно и недокументировано, но работает.Не забудьте проверить, существует ли следующая страница и является ли Pageable действительно CassandraPageRequest.Пример кода ниже:

// Serialize pageabele
if (isNull(pageable) || pageable.isUnpaged() || !(pageable instanceof 
    CassandraPageRequest)) {
        return null;
}

final CassandraPageRequest cassandraPageRequest = ((CassandraPageRequest) 
pageable);
if (isNull(cassandraPageRequest.getPagingState())) {
    return null;
}

return cassandraPageRequest.getPagingState().toString();

// Create request from serialized object
CassandraPageRequest.of(PageRequest.of(0, pageSize),
        PagingState.fromString(serializedPagingState));

Вот также проблема SpringData Jira.https://jira.spring.io/browse/DATACASS-565#add-comment

...