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

Foi útil?

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