Come recuperare i dati da parte dell'utente di Google datastore?
-
11-09-2019 - |
Domanda
sto giocando con il motore di applicazione Google e avere un po 'di problemi su JDOQL interroga .
L'esempio mostra come per andare a prendere roba da datastore:
PersistenceManager pm = PMF.get().getPersistenceManager();
String query = "select from " + Greeting.class.getName();
List<Greeting> greetings = (List<Greeting>) pm.newQuery(query).execute();
Ma cosa succede se voglio andare a prendere roba solo per un determinato utente?
Nella parte inferiore della pagina nel link qui sopra si vede che potevamo qualcosa come:
select from guestbook.Greeting where author == 'alfred@example.com'
Ma se provo il seguente che non recupera nulla:
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();
dove user
vengono recuperati come mostrato nello stesso esempio come questo:
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
Sono sicuro che questo è un compito comune, ma non riesco proprio a farlo funzionare - qualsiasi aiuto apprezzato
Soluzione
Dopo una discussione su questa discussione su Google Gruppi ho ottenuto che funziona in questo modo:
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);
sintassi JDQL è sconcertante ...