Appengine: DatastoreNeedIndexException при использовании "order by"
Здравствуйте, у меня есть это 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 ответа
Решение
Вы уверены, что ваши индексы созданы? Вы можете проверить это в вашей консоли администратора. Иногда это занимает некоторое время...
Индекс, который вы перечисляете, включает в себя TTL
поле, которое ваш запрос не использует. Индексы могут использоваться только в том случае, если они имеют точные поля, обязательные для заполнения Вы должны создать индекс на tag
а также time desc
только.