通过Mobile Backend Starter从Android查询到Google App Engine

时间:2014-07-16 22:13:43

标签: android google-app-engine google-cloud-datastore

我正在尝试在Google App Engine上对我的Datastorage进行查询。我的应用程序就是这样:

      String parametroDate = "_createdAt";
      CloudQuery cq1 = new CloudQuery("Clip");
      cq1.setScope(Scope.PAST);
      Filter userFilter = Filter.eq("clip_user", main.user.getUsername().toLowerCase()); // This filter on its own works fine

      Calendar cal = Calendar.getInstance(); // Get my time
      Date date = new Date();
      date.setMillis(cal.getTimeInMillis());
      cal.set(Calendar.HOUR, 0); // And set to 00:00:00
      cal.set(Calendar.MINUTE, 0);
      cal.set(Calendar.SECOND, 0);
      cal.set(Calendar.MILLISECOND, 0);
      date.setMillis(cal.getTimeInMillis());
      Filter userMayorqueHoy = Filter.ge(parametroDate, date);  // Greather than today at 00:00:00
      cq1.setFilter(Filter.and(userFilter, userMayorqueHoy));

从AppEngine的库中获取Dateorg.apache.tools.ant.types.resources.selectors.Date。我也试过java.sql.Date。在这两种情况下,结果都是一样的:

  

com.google.api.client.googleapis.json.GoogleJsonResponseException:400   错误的要求

     

{

     

“code”:400,

     

“错误”:[

{

  "domain": "global",

  "message": "_createdAt: java.util.LinkedHashMap is not a supported property type.",

  "reason": "badRequest"

}
     

],

     

“message”:“_ createUt:java.util.LinkedHashMap不受支持   物业类型。“

     

}

在我的DataStore中,它是一个Date类型。

这是查询:

{filterDto={operator=AND, subfilters=[{operator=EQ, values=[clip_user, franexp]}, {operator=GE, values=[_createdAt, org.apache.tools.ant.types.resources.selectors.Date@43367c00]}]}, kindName=Clip, scope=PAST}

提前致谢。

1 个答案:

答案 0 :(得分:1)

Mobile Backend Starter使用的数据存储区不支持日期数据类型。请改用此软件包 com.google.api.client.util.DateTime 中的 DateTime 。您可以通过将Date对象传递给其构造函数来创建DateTime的新实例:

new DateTime(date);