Операция получения Hazelcast

#java #hazelcast

#java #hazelcast

Вопрос:

Получаем значение hazelcast по ключу…

         IMap<tblHeaders, HazelcastJsonValue> person = hazelcastInstance.getMap("person");

        person.put(new tblHeaders("1", "ram", "0001"), new HazelcastJsonValue("{ "name1":"John1" }"));
        person.put(new tblHeaders("1", "vikas", "0002"), new HazelcastJsonValue("{ "name2":"John2" }"));
        person.put(new tblHeaders("1", "datrs", "0003"), new HazelcastJsonValue("{ "name3":"John3" }"));
  

Класс модели

 public class tblHeaders implements Serializable{  
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private String school_id;
    private String name;
    private String unique_id;

  

Вот как получить значение, передав один ключ…
пример

 HazelcastJsonValue json = person.get("school_id='0001'");
System.out.println(json.toString()); //get the value here
  

Ответ №1:

Вот несколько вещей.

  • Метод IMap.get() может извлекать только по полному значению ключа; поскольку вы предоставляете только частичный ключ, метод get() ничему не будет соответствовать.
  • Метод IMap.values() принимает аргумент предиката и является правильным методом для использования при попытке выполнить запрос, который соответствует на основе частичного содержимого ключа или полного или частичного содержимого значения записи.
  • По умолчанию к значению применяется предикат, но вы можете указать, что он применяется к ключу, используя ключевое слово __key (два подчеркивания) в поле атрибута предиката.
  • Поскольку запрос может (и соответствует) нескольким элементам, правильным типом возвращаемого значения является коллекция HazelcastJsonValue .

Вот код, который будет делать то, что вы пытаетесь:

 Predicate schoolPredicate = Predicates.equal("__key.school_id", "1");
Collection<HazelcastJsonValue> json = person.values(schoolPredicate);
System.out.println(json); //get the value here
  

Выдача выходных данных

 [{ "name3":"John3" }, { "name1":"John1" }, { "name2":"John2" }]