我使用谓词查询Hazelcast数据图,其中“in”条件如下所示。
Predicate predicate=Predicates.like("myField",liveVideoSourceIdList.get(0));
当我使用创建的谓词过滤地图时,所有值都是重复的。
如果我使用“like”而不是“in”,如下所示,则不会发生重复。对这个问题有什么想法吗?
OMP_WAIT_POLICY
答案 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);
}
}