чтение данных кассандры с помощью пейджинга не работает - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь читать данные кассандры с помощью пейджинга, но это не работает.Мои коды как ниже.Я получил одинаковое содержание для каждой страницы.Что-нибудь, что я пропустил?

  // Persist the entity objects
    for (int i=0; i<1000; i++) {
        // change person1's id
        personObj1.setPersonId("haofan" + i);
        dataServiceClient.persist(personObj1);
    }

    Query query;
    List<Person> personList;

    // Create and execute SELECT * query
    for (int i =0; i<10; i++) {
        String cqlString = "Select p from Person p";
        // String cqlString = "Select p from Person p";
        query = dataServiceClient.createQuery(cqlString).setMaxResults(100).setFirstResult(i*100);
        personList = query.getResultList();
        // Get the same personId for every page. 
        Assert.assertEquals(100, personList.size());

        System.out.println("haofan for: " + personList.get(10).getPersonId());
    }

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я пробую мульти-решение, наконец-то оно работает для меня, как показано ниже.См .: https://docs.datastax.com/en/developer/java-driver/3.6/manual/paging/

public String paging(Session session, String pageState) {
    Statement statement = new SimpleStatement("SELECT * FROM testkeyspace.\"PERSON\"");
    statement.setFetchSize(3);
    if (pageState != null) {
        statement.setPagingState( PagingState.fromString(pageState));
    }
    ResultSet rs = session.execute(statement);
    int remaining = rs.getAvailableWithoutFetching();
    System.out.println("remaining " + remaining);
    for (Row row : rs) {
        System.out.println("first" + row);
        if (--remaining == 0) {
            break;
        }
    }
    return rs.getExecutionInfo().getPagingState().toString();
}

Как использовать эту функцию:

@Test
@Category(DataServiceRequired.class)
public void pagingTest() throws Exception {
    Cluster cluster = Cluster.builder().addContactPoint("localhost").withPort(9042).build();
    Session session = cluster.connect();

    String pageState = paging(session, null);

    paging(session, pageState);
}
0 голосов
/ 18 октября 2018

Вы ищете offset запросов, которые изначально не поддерживаются на Cassandra.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...