package com.test.query; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.IMap; import com.hazelcast.query.SqlPredicate; import java.io.Serializable; import java.util.Arrays; import java.util.List; import java.util.Set; import static com.test.query.QueryCollectionsDemo.Limb.limb; public class QueryCollectionsDemo { public static void main(String[] args) { HazelcastInstance hz = Hazelcast.newHazelcastInstance(); IMap<Integer, Person> map = hz.getMap("map"); map.put(1, new Person("Georg", limb("left-leg"), limb("right-leg"))); map.put(2, new Person("Peter", limb("left-hand"), limb("right-hand"))); map.put(3, new Person("Hans", limb("left-leg"), limb("right-leg"))); map.put(4, new Person("Stefanie", limb("left-arm"), limb("right-arm"))); Set<Person> employees = (Set<Person>) map.values(new SqlPredicate("limbs[any].name == right-leg")); System.out.println("People: " + employees); Hazelcast.shutdownAll(); } public static final class Person implements Serializable { final String name; final List<Limb> limbs; private Person(String name, Limb... limbs) { this.name = name; this.limbs = Arrays.asList(limbs); } @Override public String toString() { return "Person{name='" + name + "'}"; } } static class Limb implements Serializable { final String name; Limb(String name) { this.name = name; } static Limb limb(String name) { return new Limb(name); } } }