在Google App Engine上可以使用JDOQL Date而不使用参数化查询?

时间:2013-01-08 13:28:57

标签: java google-app-engine jdo

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

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

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

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

感谢您的建议。

1 个答案:

答案 0 :(得分:1)

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

请注意,所有restrictions on queries仍然适用。

此外,如果您想在multiple properties where you also use inequality operator上进行查询,则需要事先define compound indexes

更新: JDOQL文字参数规范适用于字符串和数值;所有其他值类型必须使用参数替换。你仍然可以通过编程方式做到这一点。

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