4

对于这个例子LINK 我试着让它但是这个异常发生了??

com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found.
The suggested index for this query is:
<datastore-index kind="Contact" ancestor="true" source="manual">
    <property name="UserContacts_INTEGER_IDX" direction="asc"/>
</datastore-index>

我怎样才能手动编写这些索引?我尝试在这个 XML 上制作 WEB-INF/datastore-indexes.xml 我写了以下内容:

<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes  autoGenerate="true">

<datastore-index kind="Contact" ancestor="true" source="manual">
    <property name="UserContacts_INTEGER_IDX" direction="asc"/>
</datastore-index>

但是当我要部署此错误时,请阻止我继续部署

在“将商店部署到 Google”期间发生内部错误。XML 错误验证

那么我怎样才能得到这些索引呢?

另一个问题>> 当我运行此代码并在 User 类中添加一些属性时

@Persistent (mappedBy = "userC")
 public List<Contact> UserContacts =new  ArrayList<Contact>();

并部署它,引擎为 UserContacts 创建索引但是由于新属性而出现异常 - 上面的相同错误无法为它们创建索引 -

4

1 回答 1

1

您最好的办法是在本地运行您的应用程序并对这些实体执行一些测试查询。正如您<datastore-indexes autoGenerate="true">在索引配置中所拥有的那样,您应该得到一个名为

WEB-INF/appengine-generated/datastore-indexes-auto.xml 

在那里你应该得到你的应用程序工作所需的所有索引定义。

将这些索引定义复制到您WEB-INF/datastore-indexes.xml的应用程序并更新您的应用程序。

如果你去你的云控制台并检查你的存储/数据存储/索引视图,你应该是所有索引的构建或服务。一旦所有这些索引都在“服务”上,你应该很高兴。

于 2015-03-24T19:12:10.563 回答