Expand my Community achievements bar.

RangeIterator getSize() returns -1 for QueryResults getRows.getSize()

Avatar

Level 1

I am getting -1 on executing getSize() method on rowIterator and nodeIterator object from QueryResult getRows().

In doc it is suggested to use RangeIterator.getNumberRemaining  although no such method exists. I want to get the total number of rows returned by the query. Any inputs are helpful. RangeIterator (Content Repository for Java Technology API Version 2.0)

3 Replies

Avatar

Level 8

I am able to get the number of rows using the below snippet:

// iterate over results

    QueryResult result = query.execute();

    NodeIterator nodes = result.getNodes();

    RangeIterator itr = result.getRows();

    logger.info("size==="+itr.getSize());

RangeIterator.getNumberRemaining seems to be a new change proposed in JCR2.0 API.

Proposed_JCR_2.0_API_Changes - Jackrabbit Wiki

Avatar

Level 1

Tried same implementation, getSize() is returning -1 when rows returned are more than 100

Avatar

Level 8

have u tried using query builder api instead ? using the search result object can help u get the correct number of rows.

Query query = queryBuilder.createQuery(PredicateGroup.create(map), session);

SearchResult result = query.getResult();

log.info("SIZE==="+result.getHits().size();)