使用谓词从hazelcast获取索引字段的问题

时间:2016-12-19 14:33:08

标签: hazelcast nosql

我正在尝试将一个不是密钥的字段与远程hazelcast匹配,这里的目标是创建许多远程实例并使用它来存储序列化对象。

我注意到的是,如果我在同一次运行中同时执行put和SQL,则返回有效,如下所示:

我的班级

public class Provider implements Serializable {

private String resourceId;
private String first;

public String getResourceId() {
    return resourceId;
}

public void setResourceId(String resourceId) {
    this.resourceId = resourceId;
}

public String getFirst() {
    return first;
}

public void setFirst(String first) {
    this.first = first;
 }

}

代码:

    /*********** map initlization ************/
    Config config = new Config();
    config.getNetworkConfig().setPublicAddress(host + ":" + port);

    instance = Hazelcast.newHazelcastInstance(config);
    map =  instance.getMap("providerWithIndex");

    String first = "XXXX"
    /***** adding item ***************/
    Provider provider = new Provider();
    provider.setResourceId("11111");
    provider.setFirst( first);
    map.put(provider);
    /********** getting items ************/
    EntryObject e = new PredicateBuilder().getEntryObject();
    Predicate predicate =  e.get( "first" ).equal( first ) ;
    Collection<Provider> providers =  map.values(predicate);

一旦我同时运行put并进入不同的运行,结果为0 - 所以对于相同的代码我得不到响应。

我唯一的想法是它只进行本地获取而不是远程。但我希望我的某处有一个错误。

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错,除了您无法执行map.put(provider)之外,您需要传递密钥,因此map.put(someKey, provider); 查询看起来&amp;工作正常。