Javaクラスを定義せずにバイナリオブジェクトのApache igniteでsql fieldsクエリを実行する方法はありますか?Apache Iginte BinaryObject SqlFieldsQuery
私はこのような何かを実行したい:
CacheConfiguration<Integer, Object> cfg = new CacheConfiguration<>();
cfg.setName("test_bo");
cfg.setIndexedTypes(Integer.class, BinaryObject.class);
IgniteCache<Integer, Object> cache = ignite.getOrCreateCache(cfg);
BinaryObjectBuilder builder = ignite.binary().builder(BinaryObject.class.getName());
BinaryObject object = builder.setField("xxx", "yyy").build();
cache.put(1, object);
List<Object[]> collect = cache.withKeepBinary().query(
new SqlFieldsQuery("select xxx from BinaryObject")).getAll().stream()
.map(list -> list.toArray(new Object[list.size()]))
.collect(Collectors.toList());
assertThat(collect).containsExactly(new Object[]{"yyy"});
をしかし、私はフィールドが定義されていないという例外を持っている:
Caused by: org.h2.jdbc.JdbcSQLException: Column "XXX" not found; SQL statement: select xxx from BinaryObject [42122-175]
ありがとうございました! QueryEntityのアプローチは非常にうまくいきます。クラス定義はまったくありません。実行時にバイナリオブジェクトをビルドするのは、アプリケーションに最適な方法です。 –