论
this
问题一解决了用户(com.google.appengine.api.users.user)查询google datastore检索东西的问题,如下:
User user = userService.getCurrentUser();
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);
上面的工作很好,但是经过一些混乱之后,我意识到这种语法不太实际,因为需要构建更复杂的查询,所以我决定手动构建我的过滤器,现在我得到了如下的例子(其中过滤器通常作为字符串变量传入,但现在是为simplic内联构建的):
User user = userService.getCurrentUser();
String select_query = "select from " + Greeting.class.getName();
Query query = pm.newQuery(select_query);
query.setFilter("author == '"+ user.getEmail() +"'");
greetings = (List<Greeting>) query.execute();
显然,即使这个语法与
field = 'value'
是
supported by JDOQL
它在其他字段(字符串类型和枚举)上也可以正常工作。另一个奇怪的事情是,在应用引擎仪表板中查看数据查看器时,“作者”字段存储为类型
用户
但是这个值是'user@gmail.com',然后当我将它设置为参数时(上面的情况很好),我将把这个参数声明为一个字符串,然后传递一个用户(user)的实例,这个实例用一个简单的
toString()
(我猜)。
有人知道吗?