【问题标题】:Working with columns having dot(.) in their name using GQL使用 GQL 处理名称中包含点 (.) 的列
【发布时间】:2011-07-15 11:08:20
【问题描述】:

我在我的 GAE/Java 应用程序中使用 Objectify 进行数据存储操作。我在项目的几个地方使用了 Objectify 的 @Embeded 工具。 Objectify 使用 .分隔器。因此,我最终得到了像 entity.embededObject.Field 之类的列名

例如,我的数据存储中有一个实体“Person”,其中包含两列 nameaddress.email

我想通过编写一个简单的 GQL 查询来过滤数据存储查看器中的 Person。 但以下查询因语法错误而失败:

SELECT * FROM Person where address.email='mail@gmail.com'

而下面的工作应该是这样的

SELECT * FROM Person where name='Joe'

我做错了什么?

【问题讨论】:

标签: google-app-engine gql gqlquery objectify


【解决方案1】:

GQL 当前不支持此功能 - 仅支持“单词”字符。您绝对应该将此作为错误提交到issue tracker

【讨论】:

  • 那么这是在objectify中使用@Embeded表示法的一个严重缺点,文档从未提及。
  • @Ashwin 实际上,这是 GQL 解析器中的一个错误——它肯定应该支持用于访问这些参数的引用语法——这就是我建议你提交错误的原因。
  • 在问题跟踪器中找到了关于类似问题的错误报告。 code.google.com/p/googleappengine/issues/detail?id=2584 看起来修复工作已经开始。
【解决方案2】:

今天测试,可以用反引号运行下面的代码

SELECT * FROM `your.kind`

我相信这适用于任何参数,但如果我错了,请纠正我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多