我正在使用谷歌应用引擎,并在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();
我确信这是一项常见的任务,但我无法让它发挥作用 - 任何帮助表示赞赏!
答案 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语法令人费解......