Java 谷歌应用引擎错误:找不到匹配的索引。(爪哇)
我正在写一个查询,但它总是说“找不到匹配的索引”。我不知道为什么。我的代码如下:Java 谷歌应用引擎错误:找不到匹配的索引。(爪哇),java,google-app-engine,jdo,Java,Google App Engine,Jdo,我正在写一个查询,但它总是说“找不到匹配的索引”。我不知道为什么。我的代码如下: Query query = pm.newQuery(Classified.class); query.setFilter("emp_Id == emp"); query.setOrdering("upload_date desc"); query.declareParameters("String emp"); List<Classified> results = (List<Classified
Query query = pm.newQuery(Classified.class);
query.setFilter("emp_Id == emp");
query.setOrdering("upload_date desc");
query.declareParameters("String emp");
List<Classified> results = (List<Classified>)query.execute(session.getAttribute("emp_Id").toString());
Query Query=pm.newQuery(Classified.class);
setFilter(“emp_Id==emp”);
query.setOrdering(“上传日期描述”);
查询.申报参数(“字符串emp”);
List results=(List)query.execute(session.getAttribute(“emp_Id”).toString());
我已经添加了上面的索引,但没有帮助。我认为您需要配置一个。在Eclipse中可能已经在
WEB-INF/appengine-generated/datastore-indexes auto.xml
为您生成了一个,您只需复制到WEB-INF/datastore-indexes.xml
并再次部署即可。我相信您需要配置一个。Eclipse中可能已经在WEB-INF/appengine-generated/datastore-indexes auto.xml
为您生成了一个,您只需复制到WEB-INF/datastore-indexes.xml
并重新部署即可。您定义的索引必须按照返回的顺序保存所有可能的结果。您的查询要求特定的emp_Id,按上载日期排序,但您的索引主要按类别排序
尝试从索引定义中删除类别行,或交换类别
和上载日期
的顺序,以使上载日期
成为索引的主要排序顺序。如果代码的另一部分依赖于类别行,则可能必须创建两个单独的索引(这会产生一些计算成本)
编辑:见下面尼克·约翰逊的评论。额外参数。您定义的索引必须按返回顺序保存所有可能的结果。您的查询要求特定的emp_Id,按上载日期排序,但您的索引主要按类别排序 尝试从索引定义中删除类别行,或交换
类别
和上载日期
的顺序,以使上载日期
成为索引的主要排序顺序。如果代码的另一部分依赖于类别行,则可能必须创建两个单独的索引(这会产生一些计算成本)
编辑:见下面尼克·约翰逊的评论。额外参数。因为这需要在internet上的某个地方 当我发现这件事时,我踢了自己 错误是您没有与查询要执行的操作相匹配的索引。每个实体可以有多个索引 在Logcat error中,它将确切地告诉您要设置什么索引以及元素需要的顺序 也就是说,如果错误表示需要(它的格式不会很好):
然后Project->war->WEB-INF->appengine generated->datastore-indexes-auto.xml并准确地添加它。然后,重新部署项目
接下来进入谷歌云控制台,查看数据存储->索引。它应该说索引正在准备中(如果您可以关闭所有连接的应用程序并关闭控制台中的实例,这会更快)
一旦它移到了其他索引列表中,重新运行应用程序,它就不会再在索引方面出错
去拿吧,先生们/女士们,因为这需要在互联网上的某个地方 当我发现这件事时,我踢了自己 错误是您没有与查询要执行的操作相匹配的索引。每个实体可以有多个索引 在Logcat error中,它将确切地告诉您要设置什么索引以及元素需要的顺序 也就是说,如果错误表示需要(它的格式不会很好):
然后Project->war->WEB-INF->appengine generated->datastore-indexes-auto.xml并准确地添加它。然后,重新部署项目
接下来进入谷歌云控制台,查看数据存储->索引。它应该说索引正在准备中(如果您可以关闭所有连接的应用程序并关闭控制台中的实例,这会更快)
一旦它移到了其他索引列表中,重新运行应用程序,它就不会再在索引方面出错
去吧,先生们/女士们我在执行单个属性查询时遇到了这个问题,例如:
const query = datastore
.createQuery('Emailing_dev')
.filter('status', '=', 'Scheduled')
在我的例子中,我不应该得到任何错误,但是我得到了错误9:没有找到匹配的索引
如果我在yaml中定义了两次单一属性索引,它将起作用:
indexes:
- kind: Emailing_dev
properties:
- name: status
- name: status
但这肯定是一个错误 我在执行单个属性查询时遇到了这个问题,例如:
const query = datastore
.createQuery('Emailing_dev')
.filter('status', '=', 'Scheduled')
在我的例子中,我不应该得到任何错误,但是我得到了错误9:没有找到匹配的索引
如果我在yaml中定义了两次单一属性索引,它将起作用:
indexes:
- kind: Emailing_dev
properties:
- name: status
- name: status
但这肯定是一个错误 对于上面的查询或表格,您能否定义如何创建我在上面添加的数据存储索引,但没有帮助..您能帮我吗。。对于上面的查询或表格,您能否定义如何创建我在上面添加的数据存储索引,但没有帮助..您能帮我吗。。交换这两个属性没有帮助-App Engine无法使用包含查询中未使用的额外属性的索引。交换这两个属性没有帮助-App Engine无法使用包含查询中未使用的额外属性的索引。只需更新答案-不再使用xml文件,而是使用index.yaml。如本文所述:只是为了更新答案,不再使用xml文件,而是使用index.yaml。如下所述: