Как получить данные пользователя из хранилища данных Google?

StackOverflow https://stackoverflow.com/questions/764337

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top