Comment récupérer les données par l'utilisateur de Google datastore?
-
11-09-2019 - |
Question
Je joue avec Google App Engine et ayant un peu de mal sur JDOQL requêtes .
L'exemple montre comment récupérer des trucs du datastore:
PersistenceManager pm = PMF.get().getPersistenceManager();
String query = "select from " + Greeting.class.getName();
List<Greeting> greetings = (List<Greeting>) pm.newQuery(query).execute();
Mais si je veux aller chercher des choses que pour un utilisateur donné?
Au bas de la page dans le lien ci-dessus, il montre que nous pouvions quelque chose comme:
select from guestbook.Greeting where author == 'alfred@example.com'
Mais si j'essayez ce qui suit, il ne va pas chercher quoi que ce soit:
PersistenceManager pm = PMF.get().getPersistenceManager();
String query = "select from " + Greeting.class.getName() + " where author == '" + user.GetEmail() + "'";
List<Greeting> greetings = (List<Greeting>) pm.newQuery(query).execute();
où user
est tiré par les cheveux comme indiqué dans le même exemple comme ceci:
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
Je suis sûr que cela est une tâche commune, mais je ne peux pas le faire fonctionner - toute aide appréciée
La solution
Après une discussion sur ce fil sur Google Groupes Je l'ai travailler comme ceci:
String select_query = "select from " + Greeting.class.getName();
Query query = pm.newQuery(select_query);
query.setFilter("author == paramAuthor");
query.declareParameters("java.lang.String paramAuthor");
greetings = (List<Greeting>) query.execute(user);
syntaxe JDQL laisse perplexe ...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow