2015-12-19 4 views
1

Я немного смущен тем, как правильно передать курсор в запросе GQL. Вот то, что я до сих пор:Google Cloud Datastore - Java - GQLQuery Cursors

DatastoreV1.GqlQuery.Builder query = DatastoreV1.GqlQuery.newBuilder().setQueryString(q); 
query.addNameArgBuilder().setName("cursor").setCursor(cursor); 

Моя строка запроса заканчивается OFFSET @cursor.

Я могу видеть, как это должно работать правильно, если у меня есть указатель для прохождения. Однако при первом запуске запроса у меня не будет указателя, поэтому я прохожу null.

Должен ли я написать отдельный запрос (без OFFSET @cursor) для запуска изначально и только передать курсор после извлечения из набора результатов или будет выполняться корректно, если запрос пройдет пустой курсор?

ответ

1

Каждое связывание в строке запроса GQL требует соответствующего аргумента. Но вы можете использовать пустой указатель, чтобы указать, что запрос должен начинаться в начале набора результатов:

import com.google.protobuf.ByteString; 

... 

GqlQuery.Builder query = GqlQuery.newBuilder().setQueryString(q); 
query.addNameArgBuilder() 
    .setName("cursor") 
    .setCursor(ByteString.EMPTY); 
Смежные вопросы