cqengine 按日期时间比较
cqengine compare by datetime
我正在尝试查找某个 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(...)
据我所知最终将一直 return false
。我需要的是一种调用 DateTime.isAfterNow(...)
或 DateTime.isAfter(...)
.
的方法
我怎样才能找到集合中所有在现在之后有 DateTime
的元素?
如果我理解正确,您应该使用 greaterThan() 查询而不是 equals() 查询。
这些将依赖于 Comparable.compareTo(),而不是 Object.equals()。因此,如果您的 DateTime 对象正确实现了 Comparable 接口,它应该可以工作。
我正在尝试查找某个 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(...)
据我所知最终将一直 return false
。我需要的是一种调用 DateTime.isAfterNow(...)
或 DateTime.isAfter(...)
.
我怎样才能找到集合中所有在现在之后有 DateTime
的元素?
如果我理解正确,您应该使用 greaterThan() 查询而不是 equals() 查询。
这些将依赖于 Comparable.compareTo(),而不是 Object.equals()。因此,如果您的 DateTime 对象正确实现了 Comparable 接口,它应该可以工作。