문제

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