当我尝试按查询排序时,我有这个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>
我真的不知道在哪里看。如果我删除了订单,我通过primarykeys订购了我的对象
答案 0 :(得分:2)
您确定已创建索引吗?您可以在管理控制台中查看它。有时需要一段时间......
答案 1 :(得分:0)
您列出的索引包含您的查询未使用的TTL
字段。索引只有在具有所需的确切字段时才能使用。您应该仅在tag
和time desc
创建索引。