如何从用户从Google数据存储中获取数据?

时间:2009-04-18 22:16:29

标签: google-app-engine jdoql google-cloud-datastore

我正在使用谷歌应用引擎,并在JDOQL queries上遇到一些麻烦。

该示例显示了如何从数据存储区中获取内容:

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();

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

1 个答案:

答案 0 :(得分:2)

在对Google网上论坛this thread进行讨论之后,我得到了这样的工作:

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语法令人费解......