cachingoracle-coherence

Coherence cache not returning data for passed Filter


Below query is not returning data. Data is present. Checked with EQUALS operator.

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

Below is the CoHQL transformation of above filter.

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

What is wrong in this?


Solution

  • From ContainsAnyFilter javadoc:

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

    A guess your key.getNumber() returns single value, not a collection. And since ContainsAnyFilter operates on collections and arrays, it simply filter out all cache enties.

    You should probably try InFilter instead of ContainsAnyFilter.