1

Bonjour, je travaille avec Google App Engine sur un projet qui stocke et récupère les données du magasin de données en nuage. L'ajout des données et leur écriture n'ont pas posé de problème, mais leur récupération à l'aide de GqlQueries s'est avérée difficile. Le problème que je rencontre est le suivant: je suis incapable d'instancier l'objet Datastore d'une manière qui me permettra de l'utiliser avec GQL. Je pense que la question a trait à l'utilisation de mauvaises importations. Voici une partie de mon code:Utilisation de Java, Comment est-ce que j'instancie GAE Datastore afin qu'il puisse être utilisé conjointement avec GqlQuery?

.

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(); 

Avec avec capture d'écran, vous pouvez voir, il y a beaucoup d'options différentes pour les importations et il semble que peu importe laquelle je choisis il provoque des problèmes de quelque sorte. enter image description here .

Ce pop-up apparaît sur l'une des importations qui utilisent reconditionnés: « L'utilisation de com.google.appengine.repackaged peut entraîner votre rupture d'application sans avertissement. »

Quelqu'un at-il des recommandations sur la façon de résoudre ce problème? Quelles importations utiliser? Ou tout tutoriel que je peux suivre sur le sujet? Je l'apprécierais. Merci!

-Sil

+0

Je sais que ce ne est pas une solution, mais vous avez envisagé d'utiliser une sorte de cadre au-dessus du magasin de données? Peut-être objectiver? – jirungaray

Répondre

1

Selon la documentation [1], vous devrez peut-être utiliser cette importation:

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

Bien, il semble que GQL est plus pris en charge pour Python que pour Java. La plupart de la documentation sur GQL est écrite pour Python et il n'y a pas de référence spécifique pour celle-ci dans la section JAVA [2] mais pour la section analogique de Python GQL est référencée [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#gql