1

我正在使用 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();

whereuser被提取,如同一示例中所示:

UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();

我确信这是一项常见任务,但我无法让它工作 - 任何帮助表示赞赏!

4

1 回答 1

2

在 Google Groups 上讨论了这个线程后,我得到了它的工作方式:

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 回答