Hi,

It may be the case that you can utilize BinaryObjectBuilder instead of
HashMap for the use-case you described [1]. It is an abstraction that was
created to handle cases when no class definitions exist. You can also
change the structure of your binary objects in runtime.

So the code you have described would look like so:

Ignite ignite = Ignition.start("ignite-config.xml");
IgniteCache cache = ignite.getOrCreateCache("mycache");
IgniteBinary binary = ignite.binary();

BinaryObjectBuilder valBuilder = binary.builder("myType");
valBuilder.setField("id", 111);
valBuilder.setField("name", "cache name");
valBuilder.setField("isActive", Boolean.TRUE);

cache.put("111", valBuilder.build());

valBuilder = binary.builder("myType");
valBuilder.setField("id", 222);
valBuilder.setField("name", "cache name");
valBuilder.setField("isActive", Boolean.FALSE);

cache.put("222", valBuilder.build());

valBuilder = binary.builder("myType");
valBuilder.setField("id", 333);
valBuilder.setField("name", "cache name");
valBuilder.setField("isActive", Boolean.TRUE);

cache.put("333", valBuilder.build());


In this case you will be able to configure indexing via QueryEntity and use
standard Ignite SQL queries [2].

Let us know if this works for you.

--
AG

[1] https://apacheignite.readme.io/docs/binary-marshaller
[2] https://apacheignite.readme.io/docs/sql-queries

Reply via email to