java - 对象化查询 : filter by date

标签 java google-app-engine date gwt objectify

我正在使用 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;
    }

最佳答案

  1. 您的专栏需要编入索引

    @索引 protected Date dateCreated;

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

  3. 您可以通过降低精度对日期进行分组:2012-11-29 16:03:59.494000 变为 2012-11-29 这样,您就可以安全地使用 == 了。为您想要的每个精度(天、周、月)创建一个列。一般来说,尽量不依赖排序操作:迟早你会为这个选择感到高兴

关于java - 对象化查询 : filter by date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589461/

相关文章:

java - OSGI 有效版本范围

java - 使用单节点配置运行 Hadoop

Java:强制字符串具有一定的长度和间隔

java - 如何在不超过分钟配额的情况下在 Google App Engine 上使用 Java?

java - 比较 Java 中的日期用作 HashMap 中的键时的情况

java - [亚马逊](500310) 无效操作 : syntax error at or near "S" RedShift Error

java - 我可以在 appEngine 应用程序中 setAttribute() 但不能removeAttribute()

python - 在 Google 应用引擎上运行基本的 twilio api

java - 如何获取Java中包括最后一天在内的两个日期之间的差异?

php - MySQL 将日期范围排序到开头,然后按其他条件对其他所有内容进行排序