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

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

Était-ce utile?

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
scroll top