AppEngine:查询其名称中带有连字符的列的数据存储区

时间:2009-12-24 08:59:51

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

我正在使用Google App Engine中的servlet。该servlet从GAE的数据存储中检索数据;在查询“SELECT * FROM ...”时一切正常。但是当我想通过某个列过滤它时,它不起作用,因为列的名称有一个爆炸性的。它如下所示:

Query query = new Query("tableName");
query.addFilter("col-name", Query.FilterOperator.EQUAL, filterValue);

如何使用连字符传递propertyName?

3 个答案:

答案 0 :(得分:2)

AppEngine数据存储区没有行或列;它有模型和属性。

Defining Data Classes谈到定义你的模型;需要注意的重要一点是标识符名称的Java规则很重要,因为模型的每个属性在某些时候都会变成具有相同名称的java对象。

你自己已经描述过了:

  

如果我按照名为的列过滤   “field-1”,这是我的尝试   从每个返回的中减去1   名为field

的列的值

答案 1 :(得分:1)

java只接受美元符号“$”的字母和数字,或下划线字符“_”,如合法标识符。 所以我相信那是不可能的。也没有在python中工作

  

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/variables.html#naming

答案 2 :(得分:0)

addFilter方法是否正确用单引号括起列名?您可能想尝试自己添加它们。可以使用GQL中数据库中不是键的东西进行过滤,这可能是您所期望的。