我有一個hazelcast實例,其密鑰類型爲MyObject
,值爲enum。 假設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;
}
此外,我正在使用謂詞來篩選鍵檢索枚舉值。 對於前:
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)
我明白它試圖找到值類中的索引屬性
我該如何克服等這個東西工作,即添加索引的關鍵,而不是價值。
什麼版本的Hazelcast? – noctarius
我想,你將'date'字段添加到'MyEnum'類中。你想這樣做嗎?而且,Hazelcast需要類中的'date'字段的getter方法。 –
@noctarius:榛色版本是3.6 –