2009-04-18 8 views
1

Ich spiele mit Google App-Engine und ein bisschen Ärger auf JDOQL queries.Wie kann ich Daten vom Benutzer aus dem Google Datastore abrufen?

Das Beispiel zeigt, wie Daten aus dem Datenspeicher holen:

PersistenceManager pm = PMF.get().getPersistenceManager(); 
String query = "select from " + Greeting.class.getName(); 
List<Greeting> greetings = (List<Greeting>) pm.newQuery(query).execute(); 

Aber was, wenn ich will nur für einen bestimmten Benutzer Sachen holen?

Am unteren Rande der Seite in dem oberen Link es uns so etwas wie zeigt können:

select from guestbook.Greeting where author == '[email protected]' 

Aber wenn ich versuche, die folgenden er nichts holen:

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

wo user wird wie im selben Beispiel gezeigt wie folgt abgerufen:

UserService userService = UserServiceFactory.getUserService(); 
User user = userService.getCurrentUser(); 

bin ich mir sicher ist eine häufige Aufgabe, aber ich kann es einfach nicht zur Arbeit bringen - jede Hilfe wird geschätzt!

Antwort

2

Nach einer Diskussion über this thread auf Google Groups habe ich es wie folgt arbeiten:

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 Syntax ist rätselhaft ...

+0

+1. keine Antwort ... was erwartest du für einen Sonntag? ... einen sonnigen Sonntag dazu! –

+0

angesichts des Themas und des Wetters konnte ich wirklich keine Antwort erwarten :) – JohnIdol