假设我在IMap中有以下值:
public class Employee{
public int empId;
public List<String> categories;
public List<String> getCategories(){
return this.categories;
}
}
我想找到属于“销售”类别的所有员工。另外,我想在getCategories()上创建一个索引,以便查询快速返回。似乎没有可用的谓词。我该如何实现这一目标?看起来我必须写一个Predicate来做这件事。是否有我可以看到的示例代码,它将向我展示如何构建使用索引的谓词?
答案 0 :(得分:1)
我目前看到这种情况的唯一方法是对数据模型进行非规范化,并使用像IMap和以下内容作为值:
class EmployeeCategory {int employeeId,String category}
并在类别上添加索引。
积压的某个地方提供了更多的预付款指数,应该能够开箱即用。
答案 1 :(得分:0)
我尝试通过将List迭代到单独的Imap,然后在客户端中对其进行查询。
IMap<String,ArrayList< categories >> cache=hazelcastInstance.getMap("cache");
IMap<String, categories> cachemodified = hazelcastInstance.getMap("cachemodified") ;
int[] idx = { 0 };
xref.get("urkey").forEach(cachefelement ->{
cachemodified.put(String.valueOf(idx[0]++),cachefelement);
});
Predicate p = Predicates.equal("categoryId", "SearchValue");
Collection<categories> result = cachemodified.values(p);