【问题标题】:AppEngine: Query datastore for columns with a hyphen in its nameAppEngine:查询名称中带有连字符的列的数据存储区
【发布时间】:2010-12-29 18:32:10
【问题描述】:

我正在 Google App Engine 中开发一个 servlet。这个 servlet 从 GAE 的数据存储中检索数据;像“SELECT * FROM ...”这样的查询时一切正常。但是当我想按某个列过滤它时,它不起作用,因为该列的名称有一个连字符。是这样的:

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

如何传递带有连字符的 propertyName?

【问题讨论】:

  • 这应该可以正常工作 - 当你尝试它时会发生什么?
  • 它不返回任何行。例如,如果我按名为“field-1”的列进行过滤,这有点像我试图从名为 field 的列的每个返回值中减去 1...
  • 如果您在原始 Gql 调用中进行过滤会发生什么?
  • Raphink,它返回一个错误 :( 我无法通过 GQL 调用中的“连字符”列进行过滤...

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


【解决方案1】:

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

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

【讨论】:

  • 感谢您的评论 Kristian,但我说的是数据库中列的名称。
【解决方案2】:

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

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

您自己已经描述了这一点:

如果我按名为 “field-1”,这是我在尝试的那种 从每个返回中减去 1 称为字段的列的值

【讨论】:

    【解决方案3】:

    addFilter 方法是否正确地将列名括在单引号中?您可能想尝试自己添加它们。可以根据 GQL 中数据库中不是键的内容进行过滤,因此这可能是您所期望的。

    【讨论】:

    • 那太糟糕了。祝你好运发现问题的根源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多