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
。
以下查询未返回数据。 数据存在。使用 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
。