Datastoreでキーを使って検索をする方法

キーを使って検索をする場合には、一旦IDからキーを作成します。

DatastoreHelper.makeKey("テーブル名", キーの数字).build();

のようにします。GQLで書くところの Kind(“テーブル名”, キーの数字)に該当します。

    /**
     * @return
     * @throws DatastoreException
     */
    public static Entity getUserByuId(Long uId) throws DatastoreException {

        Query.Builder query = Query.newBuilder();
        query.addKindBuilder().setName("Users");

        Key userKey = DatastoreHelper.makeKey("Users", uId).build();
        query.setFilter(DatastoreHelper.makeFilter(
                  "__key__",
                  PropertyFilter.Operator.HAS_ANCESTOR,
                  DatastoreHelper.makeValue(userKey)));

        List<Entity> result = runQuery(query);
        if (result != null && result.size() > 0) {
            return result.get(0);
        }

        return null;
    }