Как получить данные пользователя из хранилища данных Google?
-
11-09-2019 - |
Вопрос
Я играю с 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();
я уверен, что это обычная задача, но я просто не могу заставить ее работать - любая помощь приветствуется!
Решение
После обсуждения о эта тема в группах 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 вызывает недоумение...
Не связан с StackOverflow