Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDOQL使用“获取结果”时出现问题;包括「;要求_Java_Google App Engine_Jdoql - Fatal编程技术网

Java JDOQL使用“获取结果”时出现问题;包括「;要求

Java JDOQL使用“获取结果”时出现问题;包括「;要求,java,google-app-engine,jdoql,Java,Google App Engine,Jdoql,我正在使用谷歌应用程序引擎进行一个项目,我需要对数据库进行一些查询。我使用JDOQL询问数据库。在本例中,我希望获得包含子字符串“array”的university。我认为我的查询有一个错误,因为它返回的是按字母顺序排列的大学名称,而不是包含子字符串的大学名称 Query query = pm.newQuery("SELECT FROM " + University.class.getName() + " WHERE name.contains("+array+") ORDER BY name

我正在使用谷歌应用程序引擎进行一个项目,我需要对数据库进行一些查询。我使用JDOQL询问数据库。在本例中,我希望获得包含子字符串“array”的university。我认为我的查询有一个错误,因为它返回的是按字母顺序排列的大学名称,而不是包含子字符串的大学名称

Query query = pm.newQuery("SELECT FROM " + University.class.getName() + " WHERE name.contains("+array+") ORDER BY name RANGE 0, 5");
有人能告诉我我的问题出在哪里吗

谢谢你的帮助

编辑


我有一个大学商店的列表,我有一个建议框,我们可以在这里按他的名字申请一所大学。我想自动完成请求的名称。

正确的方法如下-

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
是一个可以用任何名称替换的名称)

正确的方法如下-

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
是一个您可以用任何名称替换的名称)

应用程序引擎不支持全文搜索,您应该开始发布。但是,部分解决方案是可能的。对你来说,我觉得这很合适

首先,调整您的模型,使其也有一个较低(或大写)版本的名称——我假设它被称为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");
Query Query=pm.newQuery(University.class);
query.setFilter(“lname>=startNameParam”);
query.setFilter(“lname
应用程序引擎不支持全文搜索,您应该先解决这个问题。但是,部分解决方案是可能的。对你来说,我觉得这很合适

首先,调整您的模型,使其也有一个较低(或大写)版本的名称——我假设它被称为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");
Query Query=pm.newQuery(University.class);
query.setFilter(“lname>=startNameParam”);
query.setFilter(“lname
您可以将其替换为任意随机名称,例如“:michael”。如果查询中只有一个参数,则不需要声明它,并且将考虑使用“数组”来代替该参数。请参阅我在答案中添加的链接中的“隐式参数”。如果数组是大学名称的子字符串,则不起作用。例如,如果array='Harv',它将不返回任何内容,但如果array与它工作的数据库中存储的大学名称完全相等,它将不返回任何内容。如果数组='Harvard University',它可以工作…是的。我不认为在应用程序引擎中有一种方法可以搜索子字符串或类似于sql中的“like”的东西。你可以用任何随机名称来替换它,例如“:michael”。如果查询中只有一个参数,则不需要声明它,并且将考虑使用“数组”来代替该参数。请参阅我在答案中添加的链接中的“隐式参数”。如果数组是大学名称的子字符串,则不起作用。例如,如果array='Harv',它将不返回任何内容,但如果array与它工作的数据库中存储的大学名称完全相等,它将不返回任何内容。如果数组='Harvard University',它可以工作…是的。我不认为在应用程序引擎中有一种方法可以搜索子字符串或类似sql中的“like”之类的内容。