Java的谷歌App Engine数据存储:“在”运营商对JDO查询过滤器可用,与Python?
-
11-09-2019 - |
题
此页面描述了一种 'IN' 操作者可在数据存储区GAE用于比较一个方面对可能匹配的列表,而不是只是一个单一的值:
然而,这是用于Python。在Java(应用程序引擎1.2.5),试图
query.setFilter("someField IN param");
在我的javax.jdo.query触发一个JDOUserException“表达的部分无法解析:在参数”。
有没有一种方法可以做到这一点?
解决方案
IN
的Python版本是在应用程序级代码实际执行(其可以检查自从它的开源应用程序引擎SDK的一部分):实质上,与像您的IN
的查询变得与==
N次查询(其中n ==可LEN(PARAM))和那些N次查询的结果被合并回作为总的结果。
虽然可以说是方便有这个功能的谷歌提供的源代码的一部分,没什么超出了方便没有附加值,特别是有只是在做它自己的代码没有性能优势WRT。所以,我并不感到惊讶,这小调整是(至少到目前为止)未加入到Java版本...
其他提示
要使用IN操作符,我使用这样的:
List<Site> query(List<String> searchTerms)
{
javax.jdo.Query q = pm.newQuery(Site.class);
q.setFilter("param.contains(siteField)");
q.declareParameters("java.util.Collection param");
return (List<Site>)q.execute(searchTerms);
}
不隶属于 StackOverflow