Coherence 缓存不为传递的过滤器返回数据

Coherence cache not returning data for passed Filter

以下查询未返回数据。 数据存在。使用 EQUALS 运算符检查。

AndFilter(EqualsFilter(KeyExtractor(extractor=.getSubscriberCode()), JACK), ContainsAnyFilter(KeyExtractor(extractor=.getNumber()), [43]))

下面是上述过滤器的 CoHQL 转换。

select * from MyCache where key().subscriberCode="JACK" and key().number contains any ("43"); 

这有什么问题吗?

来自 ContainsAnyFilter javadoc:

Filter which tests a Collection or Object array value returned from a method invocation for containment of any value in a Set

猜测您的 key.getNumber() returns 单个值,而不是集合。由于 ContainsAnyFilter 对集合和数组进行操作,因此它只是过滤掉所有缓存实体。

您或许应该尝试 InFilter 而不是 ContainsAnyFilter