Используя Java, как создать экземпляр хранилища данных GAE, чтобы его можно было использовать вместе с GqlQuery?

Всем доброго времени суток, я работаю с Google App Engine над проектом, который хранит и извлекает данные из облачного хранилища данных. Добавление данных и их запись не составило проблем, но их получение с помощью GqlQueries оказалось трудным делом. У меня возникла проблема: я не могу создать экземпляр объекта Datastore таким образом, чтобы я мог использовать его с GQL. Я думаю, что проблема связана с использованием неправильного импорта. Вот часть моего кода:

,

    import com.google.appengine.api.datastore.DatastoreService;
    import com.google.appengine.api.datastore.DatastoreServiceFactory;
    import com.google.appengine.api.datastore.Key;
    import com.google.appengine.api.datastore.Entity;
    import com.google.appengine.api.datastore.KeyFactory;
    import com.google.appengine.api.datastore.Query.Filter;
    import com.google.appengine.api.datastore.*;

    import com.google.appengine.api.datastore.Query.FilterPredicate;
    import com.google.appengine.api.datastore.Query.FilterOperator;
    import com.google.appengine.api.datastore.Query.CompositeFilter;
    import com.google.appengine.api.datastore.Query.CompositeFilterOperator;
    import com.google.appengine.api.datastore.Query;
    import com.google.appengine.api.datastore.PreparedQuery;

    import com.google.apphosting.datastore.DatastoreV4.EntityResult;
    import com.google.apphosting.datastore.DatastoreV4.GqlQuery;
    import com.google.apphosting.datastore.DatastoreV4.PropertyFilter;
    import com.google.apphosting.datastore.DatastoreV4.RunQueryRequest;
    import com.google.apphosting.datastore.DatastoreV4.RunQueryResponse;

            //Build a Query
            GqlQuery.Builder query = GqlQuery.newBuilder().setQueryString("SELECT * FROM Person");
            RunQueryRequest request = RunQueryRequest.newBuilder().setGqlQuery(query).build();

            RunQueryResponse response = datastore.runQuery(request);
            List<Entity> results = new ArrayList<Entity>();
            for (EntityResult entityResult : response.getBatch().getEntityResultList()) {
              results.add(entityResult.getEntity());
            }

    /* This is the Datastore object I was initializing. It initializes just fine but
    it cannot invoke the runQuery(request) method; nor will it allow me to add items to the 
list of entities, keeps saying that they are not of similar type. 
    */
    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

С помощью снимка экрана вы можете видеть, что есть много разных вариантов импорта, и кажется, что независимо от того, какой из них я выберу, он вызывает какие-то проблемы. ,

Это всплывающее окно появляется при любом импорте, в котором используется repackaged: "Использование com.google.appengine.repackaged может привести к тому, что ваше приложение сломается без предупреждения".

У кого-нибудь есть какие-либо рекомендации относительно того, как решить эту проблему? Какой импорт использовать? Или любой учебник я могу следовать по этому вопросу? Буду премного благодарен. Спасибо!

-Sil

1 ответ

Согласно документации [1] вам может понадобиться использовать этот импорт:

import static com.google.apphosting.client.datastoreservice.client.DatastoreHelper.*;

Хотя кажется, что GQL больше поддерживается для Python, чем для Java. Большая часть документации по GQL написана для Python, и в разделе JAVA [2] нет конкретной ссылки на него, но для аналогового раздела Python на GQL есть ссылка [3].

[1] https://cloud.google.com/datastore/docs/concepts/gql

[2] https://cloud.google.com/appengine/docs/java/datastore/queries

[3] https://cloud.google.com/appengine/docs/python/ndb/queries

Другие вопросы по тегам