Google DataStore의 사용자가 데이터를 가져 오는 방법은 무엇입니까?
-
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