0

是否可以在 JDOQL 中进行日期查询,而无需在 Google App Engine 上使用参数化查询。

我正在尝试编写一些看起来像这样的通用代码,其中条件只是一个字符串,并且我希望能够指定任何内容 - 这段代码不需要对底层数据了解太多。

Query query = pm.newQuery(tClass);
        if (criteria!=null) {
            query.setFilter(criteria);
        }

标准可以是“startdate = 'someproperlyformatteddatetime'”

感谢您的建议。

4

1 回答 1

1

当然,GAE JDO 查询支持 JDOQL。您可以简单地执行以下操作:q.setFilter("height <= 200")或者q.setFilter("name == 'Smith'"),您可以在其中以编程方式组装 JDOQL 过滤器字符串。唯一的缺点是您需要知道参数的类型(保存在 Datastore 中),因为字符串需要用单引号或双引号括起来。

请注意,对查询的所有限制仍然适用。

此外,如果您想查询同时使用不等式运算符的多个属性,则需要事先定义复合索引。

更新: JDOQL 文字参数规范适用于字符串和数值;所有其他值类型必须使用参数替换。您仍然可以以编程方式执行此操作。

另一种解决方法是,如果您使用long而不是Date将日期转换为 UNIX 时间戳(类型为 long)。

于 2013-01-09T14:12:21.400 回答