cqengine比较日期时间

时间:2016-10-31 12:35:31

标签: java datetime jodatime cqengine

我正在尝试查找某个DateTime之后的对象列表。为此,我创建了以下查询:

return foos.retrieve(QueryFactory.equal(EXPIRY_INDEX, new DateTime()));

然后我创建了以下索引:

public static final Attribute<Foo, DateTime> EXPIRY_INDEX = new SimpleAttribute<Foo, DateTime>() {
        @Override
        public DateTime getValue(Foo foo, QueryOptions queryOptions) {
            return foo.getEXPIRY();
        }
};

到目前为止一切都很好,除了equal(...)方法将会调用DateTime.equals(...),据我所知,它最终会一直返回false。我需要的是一种拨打DateTime.isAfterNow(...)DateTime.isAfter(...)的方式。

如何找到集合中目前有DateTime的所有元素?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你应该使用greaterThan()查询而不是equals()查询。

这些将依赖于Comparable.compareTo(),而不是Object.equals()。因此,如果您的DateTime对象正确实现Comparable接口,它应该可以工作。