1

以下のクエリを実行しているブラウザでこのエラーが発生しますが、 "。order(" position ")がないと機能します(ただし、結果は明らかにソートされていません)。

Uncaught com.google.web.bindery.event.shared.UmbrellaException: Exception caught: Server Error: no matching index found.
The suggested index for this query is:
    <datastore-index kind="Box" ancestor="false" source="manual">
        <property name="diagram_id" direction="asc"/>
        <property name="position" direction="asc"/>
    </datastore-index>

BoxDao.java

public List<Box> listFromDiagram(String diagramId)
{
    Objectify ofy = ObjectifyService.begin();
    // List of boxes of that diagram ordered by position asc
    Query<Box> q=ofy.query(Box.class).filter("diagram_id",diagramId).order("position");
    List<Box> results = q.list();

    return results;
}

Box.java

import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Indexed;

@Entity
public class Box extends DatastoreObject{
    @Indexed private String boxId;
    @Indexed private String diagram_id;
    private String title;
    @Indexed private int position;
[...]
}

ファイル「datastore-indexes.xml」は空です...何かアイデアはありますか?ありがとう

4

1 に答える 1

3

マルチプロパティインデックスが必要です(1つのプロパティでフィルタリングし、別のプロパティで並べ替えています)。エラーメッセージは、datastore-indexes.xmlに何を入れる必要があるかを示しています。概念の概要については、以下を参照してください。

https://code.google.com/p/objectify-appengine/wiki/Concepts#Indexes

Googleのドキュメントへのリンクもたどることをお勧めします。

于 2012-11-01T18:14:27.617 に答える