2016-11-21 34 views
0

下面的查詢不返回數據。 數據存在。檢查與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

ContainsAnyFilter的javadoc:

過濾器測試的設置

一個從一個方法調用返回的任何值的遏制集合或對象數組值猜你key.getNumber()返回一個值,不是一個集合。由於ContainsAnyFilter對集合和數組進行操作,因此它只是過濾掉所有緩存實體。

您應該嘗試InFilter而不是ContainsAnyFilter

+0

感謝您的回覆。甚至我們也在想同樣的事情。 我想在這裏指出一件事情,它包含在一個環境A中的任何過濾器工作,並且在環境B中不工作。有趣的部分是,它在環境B中工作了一段時間,然後停止返回數據。 –

+0

在這種情況下,我不得不承認,我甚至無法猜測,爲什麼它正在工作,然後停下來。 –