Objectify queries: filter by date

2019-02-18 23:43发布

I am using GAE and I need to write an Objectify query that asks for the elements created after September 1st.

The dateCreated field is Java.util.Date and it is stored in this format 2012-11-29 16:03:59.494000.

This request is NOT working:

   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;
    }

1条回答
走好不送
2楼-- · 2019-02-19 00:06
  1. Your column needs to be indexed

    @Indexed protected Date dateCreated;

  2. You can sort only by one column in a request (> and < and != are all considered sorting since the index is sorted, then analyzed)

  3. You can group dates by loosing precision: 2012-11-29 16:03:59.494000 becomes 2012-11-29 this way, you can use == safely. Create a column for each precision you want (day, week, month). In general, try relying the least possible on sorting operations: sooner or later you will be happy for that choice

查看更多
登录 后发表回答