使用“in”查询时Hazealcast Predicate的重复结果

时间:2017-06-21 10:39:02

标签: hazelcast predicate hazelcast-imap

我使用谓词查询Hazelcast数据图,其中“in”条件如下所示。

     Predicate   predicate=Predicates.like("myField",liveVideoSourceIdList.get(0));

当我使用创建的谓词过滤地图时,所有值都是重复的。

如果我使用“like”而不是“in”,如下所示,则不会发生重复。对这个问题有什么想法吗?

OMP_WAIT_POLICY

1 个答案:

答案 0 :(得分:1)

我无法使用3.9-SNAPSHOT重现您的问题 您使用的是哪个版本?

我正在使用

    int min = random.nextInt( keyDomain - range );
    int max = min+range;

    String values = new String();
    for (int i = min; i < max ; i++) {
        values += i+", ";
    }

    SqlPredicate sqlPredicate = new SqlPredicate("personId IN ("+values+")");
    Collection<Personable> res = map.values(sqlPredicate);

    if(res.size()!=range){
        throw new AssertionException(sqlPredicate+" on map "+map.getName()+" returned "+res.size()+" expected "+range);
    }

    Set<Personable> set = new HashSet<Personable>(res);
    if(res.size()!=set.size()){
        throw new AssertionException(sqlPredicate+" on map "+map.getName()+" returned Duplicates");
    }

    for (Personable person : res) {
        if(person.getPersonId() < min || person.getPersonId() >= max ){
            throw new AssertionException(map.getName()+" "+person+" != "+sqlPredicate);
        }
    }