HQL Query - padogrid/padogrid GitHub Wiki
HQL (Hazelcast Query Language) wraps Hazelcast's SqlPredicate
and PagingPredicate
to provide support for ad-hoc queries and result set pagination.
select * <from-clause> [<where-clause>] [<order-by-clause>] [;]
<from-clause>: from <map-name>[.keys|.values|.entries] [<alias>]
<where-clause>: where [<alias>-name>][.value.]<field-name>...
<order-by-clause>: order by [<alias>[.key.|.value.]]<field-name> [asc|desc]
-- Query values (if keys or entries are not specified in the map name then
-- it defaults to values):
select *
from nw/orders
where customerId='ANATR' or freigt>10 and freight<100
order by customerId asc, orderId desc;
-- Query entries (keys and values) alias:
select *
from nw/orders.entries e
where e.value.customerId='ANATR' or e.value.freight>10 and e.value.freight<100
order by e.value.customerId asc, e.value.orderId desc;
-- Query keys (returns keys only):
-- Note that at the time of writing, Hazelcast does not support query
-- executions on composite keys (Hazelcast version 3.12)
select *
from nw/orders.keys k
where k>1000;
-- Query keys sorted by objects themselves in ascending order.
-- The key objects must implement Comparable.
select *
from nw/orders.keys k order by k desc;
-- Query values sorted by objects themselves in descending order.
-- The value objects must implement Comparable.
select *
from nw/orders v order by v desc;
import org.hazelcast.addon.hql.HqlQuery;
import org.hazelcast.addon.hql.IPageResults;
...
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
HqlQuery<Map.Entry<String, Order>> hql = HqlQuery.newHqlQueryInstance(hz);
String query = "select * "
+ "from nw/orders.entries e "
+ "order by e.value.shipCountry asc, e.value.customerId desc, e.key desc";
IPageResults<Map.Entry<String, Order>> results = hql.execute(query, 100);
Collection<Map.Entry<String, Order>> col;
int i = 0;
do {
col = results.getResults();
System.out.println("Page " + results.getPage());
System.out.println("-------");
for (Map.Entry<String, Order> entry : col) {
String key = entry.getKey();
Order order = entry.getValue();
System.out.println(i++ + ". " + order.getShipCountry() + ", " + order.getCustomerId() + " key=" + key);
}
} while (results.nextPage());