3

我正在使用 GAE,我需要编写一个 Objectify 查询,询问 9 月 1 日之后创建的元素。

dateCreated 字段是 Java.util.Date,它以 2012-11-29 16:03:59.494000 的格式存储。

此请求不起作用:

   public List<MyElement> listAllFromUser(String userId)
    {
        Objectify ofy = ObjectifyService.begin();
        Query<MyElement> q=ofy.query(MyElement.class).filter("dateCreated >", "2013-09-01 00:00:00");

        List<MyElement> results = q.list();

        return results;
    }
4

1 回答 1

8
  1. 您的列需要被索引

    @Indexed 受保护日期 dateCreated;

  2. 您只能按请求中的一列排序(> 和 < 和 != 都被视为排序,因为索引已排序,然后进行分析)

  3. 您可以通过丢失精度来分组日期: 2012-11-29 16:03:59.494000 变成 2012-11-29 这样,您可以安全地使用 ==。为所需的每个精度(日、周、月)创建一个列。一般来说,尽量少依赖排序操作:迟早你会为这个选择感到高兴

于 2013-10-25T16:29:32.510 回答