如何使用Hazelcast谓词过滤IMap中具有作为对象列表的值的条目

问题描述 投票:0回答:1

有什么方法可以使用谓词来过滤IMap<String, List<Foo>>中的条目,其中MapStore的值是对象列表?我的情况如下:

  public class Foo {
      String bar;
      String foo
      String key;
      //Getters and Setters
  }

使用以下方法通过Foo获取Predicate的列表。

      public List<Foo> getFooListByBar(String bar) {
        IMap<String, List<Foo>> fooListIMap = hazelcastInstance.getMap(FOO_MAP);
        Predicate predicate = Predicates.equal("bar",bar);
        Collection<List<Foo>> fooFiltered =  fooListIMap.values(predicate);
        //Other steps to retrieve list from Collection
     }

上面的代码按预期抛出java.lang.IllegalArgumentException,但我不知道如何实现上述要求。任何帮助是极大的赞赏。预先感谢。

com.hazelcast.query.QueryException: java.lang.IllegalArgumentException: There is no suitable accessor for 'bar' on class 'java.util.ArrayList'
    at com.hazelcast.query.impl.getters.ReflectionHelper.createGetter(ReflectionHelper.java:171) ~[hazelcast-3.12.6.jar:3.12.6]
    at com.hazelcast.query.impl.getters.Extractors.instantiateGetter(Extractors.java:152) ~[hazelcast-3.12.6.jar:3.12.6]
    at com.hazelcast.query.impl.getters.Extractors.getGetter(Extractors.java:118) ~[hazelcast-3.12.6.jar:3.12.6]
    at com.hazelcast.query.impl.getters.Extractors.extract(Extractors.java:73) ~[hazelcast-3.12.6.jar:3.12.6]
    at com.hazelcast.query.impl.QueryableEntry.extractAttributeValueFromTargetObject(QueryableEntry.java:171) ~[hazelcast-3.12.6.jar:3.12.6]
    at com.hazelcast.query.impl.QueryableEntry.extractAttributeValue(QueryableEntry.java:107) ~[hazelcast-3.12.6.jar:3.12.6]
    at com.hazelcast.query.impl.QueryableEntry.getAttributeValue(QueryableEntry.java:61) ~[hazelcast-3.12.6.jar:3.12.6]
    at com.hazelcast.query.impl.predicates.AbstractPredicate.readAttributeValue(AbstractPredicate.java:145) ~[hazelcast-3.12.6.jar:3.12.6]
    at com.hazelcast.query.impl.predicates.AbstractPredicate.apply(AbstractPredicate.java:62) ~[hazelcast-3.12.6.jar:3.12.6]
caching hazelcast predicate hazelcast-imap
1个回答
0
投票

您可以查询集合。

请参见Store and filter on list of values for a key in Hazelcast以获取执行JSON的示例,但它与POJO的语法相同。

Official Documentation

© www.soinside.com 2019 - 2024. All rights reserved.