自定义对象中的Hazelcast查询

时间:2014-08-29 14:53:15

标签: java sql hazelcast

我在我的应用程序中使用Hazelcast作为共享地图。我的地图是这样的:

Map<String, MyObject>

MyObject

class MyObject implements Serializeble {
    // Map FieldName -> FieldValue
    Map<String, Object> myMap;
}

所以我想使用Hazelcast distributed query支持来查询我的对象。我已经检查过Hazelcast使用get方法来检索对象值,但在我的情况下,我没有得到,而不是我想实现自己的{{1喜欢:

getField

并强制Hazelcast调用此方法。作为一种解决方法,我已经破解了Hazelcast代码以在类中使用CustomGetter

Object getField(String fieldName) {
    return myMap[fieldName];
}

第144行:

/hazelcast/src/main/java/com/hazelcast/query/impl/ReflectionHelper.java

这里是我的if (localGetter == null) { localGetter = new CustomFieldGetter(name, obj); } 课程:

CustomFieldGetter

好的很酷,在重新编译Hazelcast之后,使用这个新的jar,我可以使用普通的sql来查询。但是对于pagingQueries,我遇到了一些错误。

所以我最后的问题是: 我想避免破解Hazelcast代码(进一步更新)。 Hazelcast在这个问题上有一些支持吗?这个问题还有其他解决办法吗?

PS:我使用的是Hazelcast版本 - &gt;的 hazelcast-3.3-RC3

提前致谢。

1 个答案:

答案 0 :(得分:3)

一个选项是实现Portable接口。然后,您可以将每个条目写为单独的字段。这假设条目值也实现了Portable接口。

查看sample code如何使用Portable。