Coherence缓存不返回传递的Filter的数据

时间:2016-11-21 16:31:22

标签: caching oracle-coherence

以下查询不返回数据。 数据存在。用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"); 

这有什么问题?

1 个答案:

答案 0 :(得分:1)

来自ContainsAnyFilter javadoc:

  

过滤器,用于测试从方法调用返回的Collection或Object数组值,以包含Set

中的任何值

猜测你的key.getNumber()会返回单个值,而不是集合。由于ContainsAnyFilter对集合和数组进行操作,因此它只是过滤掉所有缓存中的内容。

您应该尝试InFilter而不是ContainsAnyFilter

相关问题