我正在尝试在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的库中获取Date
类org.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}
提前致谢。
答案 0 :(得分:1)
Mobile Backend Starter使用的数据存储区不支持日期数据类型。请改用此软件包 com.google.api.client.util.DateTime 中的 DateTime 。您可以通过将Date对象传递给其构造函数来创建DateTime的新实例:
new DateTime(date);