2016-09-28 2 views
0

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

Метод Я зову это:

String addEntryListener(MapListener listener, 
Predicate<K,V> predicate, 
boolean includeValue) 

Я пытаюсь построить предикат для фильтрации моего ключа. Мои ключи типа HazelKey, которые имеют поля:

KeyOne keyOne; 
KeyTwo keyTwo; 
KeyThree keyThree; 

Затем эти три клавиши имеют поле:

String code 

Поэтому я пытаюсь сделать что-то вдоль линий:

PredicateBuilder predicate = EntryObject.key().get("keyOne").get("code").equal("1234"); 

для создания предиката для фильтрации всех записей с помощью значения keyOne 1234.

Однако, как только был добавлен слушатель, записи обновляется, hazelcast бросает ошибку:

Caused by: com.hazelcast.query.QueryException: java.lang.IllegalArgumentException: There is no suitable accessor for 'code' on class 'class com.sun.proxy.$Proxy45' 

Я считаю, что это происходит потому, что predicateBuilder просто не обращая внимания на верхний уровень В параметре «KeyOne» и просто используя «код» так мой вопрос: как мне это многоуровневое предикатное строительство?

Заранее спасибо.

ответ

0

Я не слишком хорошо знакомы с PredicateBuilder, но я считаю, что это должно работать для вас:

import static com.hazelcast.query.Predicates.equal; [...] Predicate p = equal("keyOne.code", 1234);

Смежные вопросы