2015-06-22 1 views
0

Я настроил кеш 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()); 
} 

ответ

0

Ваш пример отлично работает для меня. Можете ли вы взглянуть на мой код и посмотреть, нет ли какой-либо отличимости от вашей (см. Ссылку ниже)?

https://github.com/vkulichenko/ignite-tests/blob/master/src/main/java/org/vk/ignite/query/metadata1/Main.java

Какую версию вы?

+0

Привет Валентин, Спасибо, что проверили код. Сейчас я проверяю его против моего. Я использую ignite 1.0.0 – GGN

+0

Привет Валентин, я запустил тот же код в своей системе, но он возвращает нулевой массив, есть ли какой-либо файл конфигурации, который мне не хватает? – GGN

+0

Я изменил мою версию Ignite на 1.1.0-инкубацию. И теперь запрос извлекает результаты. – GGN