Как получить данные пользователя из хранилища данных Google? - PullRequest
1 голос
/ 19 апреля 2009

Я играю с Google App Engine и у меня возникли проблемы с JDOQL-запросами .

В примере показано, как извлечь данные из хранилища данных:

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

Но что, если я хочу получить материал только для данного пользователя?

Внизу страницы в приведенной выше ссылке показано, что мы могли бы что-то вроде:

select from guestbook.Greeting where author == 'alfred@example.com'

Но если я попробую следующее, ничего не получится:

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

где user извлекается, как показано в том же примере, как это:

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

Я уверен, что это обычная задача, но я просто не могу заставить ее работать - любая помощь приветствуется!

1 Ответ

2 голосов
/ 19 апреля 2009

После обсуждения этой темы в Группах Google я получил ее так:

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 вызывает недоумение ...

...