Datastoreで412 Precondition Failedエラーが出る原因

@iwasaki 170views 更新:2014年11月14日

Datastoreにアクセスする際に以下のエラーが出るケースがあります。

Caused by: com.google.api.client.http.HttpResponseException: 412 Precondition Failed
no matching index found.
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1047)
    at com.google.api.services.datastore.client.RemoteRpc.call(RemoteRpc.java:77)
    ... 64 more

これはORDER指定時にINDEXが貼ってないと出るエラーになります。

  /**
   * 
   * @param key
   * @return
   * @throws DatastoreException
   */
  public static List<Entity> listHoge(Key key) throws DatastoreException {
    Query.Builder query = Query.newBuilder();
    query.addKindBuilder().setName("Hoge");
    query.setFilter(DatastoreHelper.makeFilter(
      "User",
      PropertyFilter.Operator.EQUAL,
      DatastoreHelper.makeValue(key)));
    /*
     * query.addOrder(DatastoreHelper.makeOrder( "Target",
     * PropertyOrder.Direction.ASCENDING));
     */

    return runQuery(query);
  }

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません