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、アプリを更新します。

クラウド コンソールに移動して Storage/datastore/indexes ビューを確認すると、すべてビルドまたはサービスのいずれかでインデックスが作成されているはずです。これらのインデックスがすべて「サービス提供中」になったら、準備完了です。

于 2015-03-24T19:12:10.563 に答える