Appengine: DatastoreNeedIndexException при использовании "order by" - PullRequest
2 голосов
/ 23 апреля 2011

Здравствуйте, у меня возникает исключение DatastoreNeedIndexException при попытке заказа по запросу.

вот код:

@PersistenceCapable
public class Gaze {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;

@Persistent
Blob image;

@Persistent
Long time;

@Persistent
Long TTL;

@Persistent
String town;

@Persistent
String countryCd;

@Persistent
String tag;

запрос:

Query query = pm.newQuery(Gaze.class, "tag == tagParam");
    query.declareParameters("String tagParam");
    //query.setRange(0,10);
    query.setOrdering("time desc");
    List<Gaze> results = (List<Gaze>) query.execute(tag);

и индексы:

<datastore-indexes autoGenerate="false">
<datastore-index kind="Gaze" ancestor="false">
<property name="tag"  direction="asc" />
<property name="time" direction="desc"/>
<property name="TTL"  direction="desc" />
</datastore-index>

Я действительно не знаю, где искать. Если я удаляю заказ, мои объекты заказываются по первичным ключам

Ответы [ 2 ]

2 голосов
/ 23 апреля 2011

Вы уверены, что ваши индексы созданы? Вы можете проверить это в вашей консоли администратора. Иногда это занимает некоторое время ...

0 голосов
/ 24 апреля 2011

Указанный вами индекс содержит поле TTL, которое не используется вашим запросом. Индексы могут использоваться только в том случае, если они имеют точные поля, обязательные для заполнения. Вы должны создать индекс только для tag и time desc.

...