以下查询不返回数据。 数据存在。用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");
这有什么问题?
答案 0 :(得分:1)
来自ContainsAnyFilter
javadoc:
过滤器,用于测试从方法调用返回的Collection或Object数组值,以包含Set
中的任何值
猜测你的key.getNumber()
会返回单个值,而不是集合。由于ContainsAnyFilter
对集合和数组进行操作,因此它只是过滤掉所有缓存中的内容。
您应该尝试InFilter
而不是ContainsAnyFilter
。