我的模型中有属性:
@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);
但他们都没有工作,有什么改变吗?
答案 0 :(得分:0)
当您将关键对象与关键对象进行比较时,您正在将对象与字符串进行比较。
__ key__是一个Key类型的特殊属性。这不是一个字符串。如果您想要启动此过滤器.filterKey("__key__", email)
,除了电子邮件,您应该在此处提供完整密钥。
在此处查看密钥过滤器部分。
https://cloud.google.com/datastore/docs/concepts/queries#filters