添加字段以过滤:Google App Engine的布尔值?

时间:2015-12-11 02:50:31

标签: java google-app-engine

我尝试构建一个查询语句,如果用户名与数据库中的姓氏或名字匹配,则返回结果,即

("姓氏",Query.FilterOperator.EQUAL,用户名)或("名字",Query.FilterOperator.EQUAL,用户名)

但我不知道语法。有人能指出我正确的方向吗?

(对不起,我知道我不应该在这里问基本的编程问题,我看到Magento的相关帖子(addfieldtofilter),但不是GAE。)

1 个答案:

答案 0 :(得分:4)

正如Making 'OR' Queries in Google App Engine Data Model首要答案简明扼要地说明的那样,"数据存储区上没有OR操作。您必须执行两个单独的查询,并在您自己的代码中找到交叉点"。 (好吧,应该是联盟,而不是交集,当然: - )。

这个特定的问题提到了objectify,但是,它并不是客观化 - 只是限制了数据存储的工作方式。 (即使!=IN运算符看似有效,也是一种视错觉,在应用程序端实现了两个或多个单独的查询,然后在内存中结合它们。在App Engine中 python ndb数据存储区访问层 提供ndb.OR运算符 - 但 也会被模拟在应用程序级别(从数据存储区的角度来看,它的多个查询 - 然后ndb的应用程序级代码执行内存联合)。

我想有人可以类似地为Java构建一个数据存储访问框架(例如fork和enrich objectify),以便像OR一样模拟ndb,但最好的是我的知识,没有人认为这值得烦恼(我发现很难不同意 - 尽管ndb是由Python的发明者和领导者Guido van Rossum设计和实现的,当时他专门在Google App上工作所以他的工程判断可能比我的更值得信任: - )。