#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" }]