Google App Engine,JDO,在过滤器中使用Date

时间:2010-08-30 13:28:37

标签: java google-app-engine filter google-cloud-datastore java.util.date

在我的应用程序中,我想从数据存储区中获取一组实体,其中Date字段设置为当前时刻之前的日期。

我确实意识到,这样做的一种方法是简单地将日期存储在这些实体中,只需long值,以毫秒为单位。

但实际上有一种方法可以将它们存储为Date并能够将它们用于过滤吗?

我尝试过类似的东西 query.setFilter("dateField.before(dateParam)"); ,但它没有用,也没有简单的比较。

提前致谢。

2 个答案:

答案 0 :(得分:5)

只需将dateField声明为java.util.Date,然后使用

query.setFilter("dateField < dateParam");
query.declareParameters("java.util.Date dateParam");
List<...> results = (List<...>) query.execute(new java.util.Date());

请参阅此处的示例:http://code.google.com/appengine/docs/java/datastore/queriesandindexes.html

答案 1 :(得分:1)

康斯坦丁的解决方案给出了:

  

运营商&lt;不能用作连接条件的一部分。

在参数名称前添加冒号使它对我有用:

q.setFilter("createdTime < :nowTime");
List<...> result = (List<...>) q.execute(new java.util.Date());