Como buscar dados por usuário do Google armazenamento de dados?
-
11-09-2019 - |
Pergunta
Eu estou jogando com o Google App Engine e ter um pouco de dificuldade em JDOQL consultas .
O exemplo mostra como buscar coisas do armazenamento de dados:
PersistenceManager pm = PMF.get().getPersistenceManager();
String query = "select from " + Greeting.class.getName();
List<Greeting> greetings = (List<Greeting>) pm.newQuery(query).execute();
Mas o que se eu quiser buscar o material apenas para um determinado usuário?
Na parte inferior da página no link acima mostra que podíamos algo como:
select from guestbook.Greeting where author == 'alfred@example.com'
Mas se eu tente o seguinte não buscar qualquer coisa:
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();
onde user
é obtida como mostrado na mesma exemplo como este:
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
Estou certo de que esta é uma tarefa comum, mas eu simplesmente não consigo fazê-lo funcionar - qualquer ajuda apreciado
Solução
Depois de uma discussão sobre esta discussão no Google Groups Eu tenho que trabalhar assim:
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);
JDQL sintaxe é intrigante ...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow