按App Engine Java中的String id属性过滤实体

时间:2017-12-07 18:23:52

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

我的模型中有属性:

@Id
@Index
public String email;

对于使用email变量进行搜索的过滤器,我有这个过滤器:

Key emailKey = KeyFactory.createKey("email", email);
Filter filter = new 
         FilterPredicate(Entity.KEY_RESERVED_PROPERTY, FilterOperator.EQUAL, emailKey );

result = ObjectifyService.ofy().load().type(User.class)
         .filter(filter);

我也试试这个:

result = ObjectifyService.ofy().load().type(User.class)
        .filterKey("__key__", email);

但他们都没有工作,有什么改变吗?

1 个答案:

答案 0 :(得分:0)

当您将关键对象与关键对象进行比较时,您正在将对象与字符串进行比较。

__ key__是一个Key类型的特殊属性。这不是一个字符串。如果您想要启动此过滤器.filterKey("__key__", email),除了电子邮件,您应该在此处提供完整密钥。

在此处查看密钥过滤器部分。

https://cloud.google.com/datastore/docs/concepts/queries#filters