У меня есть экземпляр hazelcast, ключ которого имеет тип MyObject
, а значение - перечисление. Скажем, одним из атрибутов класса MyObject
является date
, который имеет тип java.sql.Date
.Hazelcast: Проблема при добавлении индекса
class MyObject {
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date
}
}
public enum MyEnum {
TEST_ENUM;
}
Также я использую предикат для фильтрации по ключам, чтобы получить значение перечисления. Для Ex:
EntryObject entryObject = new PredicateBuilder().getEntryObject();
PredicateBuiler predicateBuilder = entryObject.key.get(date).isNull;
Это, как я пытаюсь добавить индекс:
IMap<MyObject, MyEnum> map = hazelcastInstance.getMap("test");
map.addIndex("date", true)
Но как только это становится выполняется исключение броска:
com.hazelcast.query.QueryException: java.lang.IllegalArgumentException: There is no suitable accessor for 'date' on class 'class com.main.constants.myEnum'
at com.hazelcast.query.impl.getters.ReflectionHelper.createGetter(ReflectionHelper.java:176)
at com.hazelcast.query.impl.getters.Extractors.instantiateGetter(Extractors.java:88)
at com.hazelcast.query.impl.getters.Extractors.getGetter(Extractors.java:73)
at com.hazelcast.query.impl.getters.Extractors.extract(Extractors.java:57)
at com.hazelcast.query.impl.QueryableEntry.extractAttributeValueFromTargetObject(QueryableEntry.java:156)
at com.hazelcast.query.impl.QueryableEntry.extractAttributeValue(QueryableEntry.java:82)
at com.hazelcast.query.impl.QueryableEntry.getAttributeValue(QueryableEntry.java:48)
at com.hazelcast.query.impl.QueryableEntry.getConverter(QueryableEntry.java:67)
at com.hazelcast.query.impl.IndexImpl.saveEntryIndex(IndexImpl.java:67)
at com.hazelcast.map.impl.operation.AddIndexOperation.run(AddIndexOperation.java:75)
Я понимаю он пытается найти атрибут индекса в классе значений
Как мне выбрать g и эта работа, т. е. добавляет индекс к ключу, а не к значению.
Какая версия Hazelcast? – noctarius
Я полагаю, вы добавляете поле 'date' в класс' MyEnum'. Вы пытаетесь это сделать? И, Hazelcast требует метода getter для поля 'date' в классе. –
@noctarius: версия для орешника 3,6 –