是否可以在JDOQL中进行日期查询,而无需在Google App Engine上使用参数化查询。
我正在尝试编写一些看起来像这样的通用代码,其中条件只是一个字符串,我希望能够指定任何东西 - 这段代码不需要了解底层数据。
Query query = pm.newQuery(tClass);
if (criteria!=null) {
query.setFilter(criteria);
}
标准可以是“startdate ='someproperlyformatteddatetime'”
感谢您的建议。
答案 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)。