Используя 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