Как извлечь объекты из карты Hazelcast на основе поля в его дочернем объекте - PullRequest
0 голосов
/ 07 апреля 2020

Я использую версию Hazelcast 3.12.6 в одном из моих сервисов для кэширования сущности (Parent), в которой есть дочерняя сущность (Child). Примерно так:

public class Parent { 
    private String parentField;
    private Child child;
    //Getters and Setters
}

public class Child { 
   private String childField;
   //Getters and Setters
}

Теперь у меня есть требование извлекать все родительские записи на основе childField в дочерней сущности. Итак, может кто-нибудь, пожалуйста, скажите мне, как добиться этого с помощью com.hazelcast.query.Predicate. Я ищу что-то вроде ниже:

IMap<String, Parent> parentIMap = hazelcastInstance.getMap("parent");
Predicate predicate = Predicates.equal("child.childField", "somevalue");
parentIMap.values(pagingPredicate);

Любая помощь с благодарностью. Заранее спасибо.

1 Ответ

4 голосов
/ 07 апреля 2020
    parentIMap.put("1", new Parent("Father",new Child("John")));
    parentIMap.put("2", new Parent("Father",new Child("Maria")));
    parentIMap.put("3", new Parent("Mother",new Child("John")));
    parentIMap.put("4", new Parent("Mother",new Child("Maria")));

С учетом указанного выше набора данных следующие запросы будут возвращать родительские записи для John

    Collection values = parentIMap.values(new SqlPredicate("child.childField =John"));
    Collection values = parentIMap.values(Predicates.equal("child.childField","John"));
...