2016-02-02 2 views
2

Я новичок в Oracle Coherence Cache.Когерентный кэш-фильтр | Отсутствует или недоступен метод RuntimeException

Я сконфигурировал статический распределенный кеш, используя схему чтения-записи-обратной карты.

Я помещаю данные в кэше

CacheFactory.getCache(regionName).put("EntityName",Vector<Entity>); 

Сейчас я пытаюсь фильтровать кэшированные данные с помощью com.tangosol.util.filter.EqualsFilter:

EqualsFilter filter = new EqualsFilter(new ReflectionExtractor("getStateCd", 2); 

из кэша я получаю кэшированные данные, но при прохождении фильтра аргумент это исключение исключения ie CacheFactory.getCache (regionName) .entrySet (фильтр);

RuntimeException: Отсутствует или недоступен метод: java.util.Vector.getStateCd(); в com.tangosol.util.extractor.ReflectionExtractor.extract (ReflectionExtractor.java:113)

Как я могу сделать Reflection Extractor искать метод getStateCd в Entity и не в Vector как Vector<Entity> или List<Entity>?

+0

Ваш экстрактор 'EqualsFilter' имеет синтаксическую ошибку. Вы ищете значения, где 'vector.get (2) .getStateCd()' равно некоторому значению или где any/all 'entity.getStateCd() == 2'? –

+0

У него нет никакой синтаксической ошибки, в основном это выборка всех записей из кеша, где entity.getStateCd() = 2 – Arsh

ответ

0

Возможное решение - реализовать интерфейс ValueExtractor для сбора stateCd значение поля с каждого Entity в Collection. И используйте этот экстрактор с когерентностью ContainsFilter или ContaisAnyFilter