1

私はグーグルアプリエンジンで遊んでいて、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();

これは一般的なタスクだと確信していますが、機能させることができません。助けていただければ幸いです。

4

1 に答える 1

2

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構文は不可解です...

于 2009-04-19T03:23:32.857 に答える