Я настроил кеш Datagrid в apache ignite. поля запроса настраиваются с использованием CacheTypeMetada
. Но я не могу получить значения из кэша с помощью sql.Apache Ignite запрос не извлекается для полей кэша, настроенных в CacheTypeMetadata
Если я изменил поля запроса, настроенные на @QueryIndexType (index = true)
Запрос возвращает результат.
Мой вопрос: есть ли какая-либо конфигурация, которую мне не хватает, чтобы выполнить поиск SQL-запросов в Cache, настроенный с использованием CacheTypeMetadata?
Thankyou.
Предоставление моего фрагмента кода.
CacheConfiguration<TestKey, Test> testCacheCfg = new CacheConfiguration<>(TEST_CACHE);
В firlds запроса настраиваются с помощью CacheTypeMetadata.
private static Collection<CacheTypeMetadata> testCacheMetadata(){
Collection<CacheTypeMetadata> types = new ArrayList<>();
CacheTypeMetadata type = new CacheTypeMetadata();
type.setKeyType(TestKey.class.getName());
type.setValueType(Test.class.getName());
Map<String, Class<?>> qryFlds = type.getQueryFields();
qryFlds.put("testId", int.class);
qryFlds.put("orgId", String.class);
qryFlds.put("md5", String.class);
Map<String, Class<?>> ascFlds = type.getAscendingFields();
ascFlds.put("testId", int.class);
ascFlds.put("orgId", String.class);
types.add(type);
return types;
}
Запрос называется:
private static void sqlQuery(Ignite ignite, TestKey testKey) {
IgniteCache<TestKey, Test> cache = Ignition.ignite().cache(TEST_CACHE);
// SQL clause
String sql = "where testId = ? and orgId = ?";
// Execute query
System.out.println("query result" +
cache.query(new SqlQuery<TestKey, Test>(Test.class, sql).
setArgs(testKey.getTestId(), testKey.getOrgId())).getAll());
}
Привет Валентин, Спасибо, что проверили код. Сейчас я проверяю его против моего. Я использую ignite 1.0.0 – GGN
Привет Валентин, я запустил тот же код в своей системе, но он возвращает нулевой массив, есть ли какой-либо файл конфигурации, который мне не хватает? – GGN
Я изменил мою версию Ignite на 1.1.0-инкубацию. И теперь запрос извлекает результаты. – GGN