私のアプリケーションには2つのキャッシュがあります。私はフィルタの左側がキャッシュ "A"に、フィルタの右側がキャッシュ "B"になるANDフィルタを作成する必要があります。複数のキャッシュにまたがる一貫性フィルタ
これは可能ですか?
私の現在のフィルタは次のようである:
AllFilter(
AllFilter(
EqualsFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=0)), 1),
EqualsFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=1)), C)
),
AndFilter(
GreaterFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=4)), 1998-12-31 00:00:00.0),
OrFilter(
AndFilter(
EqualsFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=33)), S),
GreaterFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=27)), 280)
),
AndFilter(
EqualsFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=33)), N),
GreaterFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=26)), 280)
)
)
)
)
問題は、この抽出は、貴様のキャッシュ上で行動しなければならないということです。すべての条件が同じキャッシュにある場合、コードは次のようになります。
list.addAll(cacheA.keySet(myFilter));
が、実際のフィルタは、3つの異なるキャッシュ上にある:
cacheA ->
AllFilter(
EqualsFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=0)), 1),
EqualsFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=1)), C)
)
cacheB ->
GreaterFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=4)), 1998-12-31 00:00:00.0)
cacheC and CacheA ->
OrFilter(
AndFilter(
CacheA --> EqualsFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=33)), S),
CacheB --> GreaterFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=27)), 280)
),
AndFilter(
CacheA --> EqualsFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=33)), N),
CacheB --> GreaterFilter(PofExtractor(target=VALUE, navigator=SimplePofPath(indices=26)), 280)
)
)
)
親切に関してあなたが持っているでしょう結局
(CacheA.getValue()== CacheB.getValue()) \tリターンA. は、それが正しい場合は、 を実装するように見えますか? –