我正在使用Google App Engine进行项目,我需要对数据库进行一些查询。我使用JDOQL来询问数据库。在我的情况下,我想获得包含子串“数组”的大学。我认为我的查询有错误,因为它按字母顺序返回大学名称,而不是包含子字符串的大学名称。
Query query = pm.newQuery("SELECT FROM " + University.class.getName() + " WHERE name.contains("+array+") ORDER BY name RANGE 0, 5");
有人能告诉我查询中有什么问题吗?
感谢您的帮助!
修改
我有一个大学商店列表,我有一个建议箱,我们可以通过他的名字申请大学。我想自动填写所要求的名字。
答案 0 :(得分:1)
应用引擎不支持全文搜索,您应该标记问题217。但是,部分解决方法是可行的。在你的情况下,我认为这是一个很好的选择。
首先,调整你的模型,以便有一个较低(或大写)版本的名称 - 我会假设它被称为lname。除非您希望查询区分大小写。
然后你这样查询:
Query query = pm.newQuery(University.class);
query.setFilter("lname >= startNameParam");
query.setFilter("lname < stopNameParam");
query.setOrdering("lname asc");
query.declareParameters("String startNameParam");
query.declareParameters("String stopNameParam");
query.setRange(0, 5);
List<University> results = (List<University>) query.execute(search_value, search_value + "z");
答案 1 :(得分:0)
正确的方法就是这样 -
Query query = pm.newQuery(University.class,":p.contains(name)");
query.setOrdering("name asc");
query.setRange(0, 5);
List univs = q.execute(Arrays.asList(array));
(注意 - 在这种情况下,:p
是implicit param名称,您可以用任何名称替换