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

È stato utile?

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 ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top