2015-04-28 3 views
0

Возможно ли вернуть оба объекта соединения в результате запроса кеша GridGain?GridGain присоединяется к запросу с возвращенными объектами

Мы можем получить либо одну из сторон соединения, либо поля из обоих (и затем использовать их для извлечения каждого объекта отдельно), но, глядя на примеры и документацию, похоже, нет способа получить оба объекта.

Спасибо!

ответ

0

@ dejan- В GridGain и Apache Ignite вы можете использовать _key и _val функциональность с SqlFieldsQuery, чтобы вернуть объект. Например, -

SqlFieldsQuery sql = new SqlFieldsQuery(
"select a._key, a._val, b._val from SomeTypeA a, SomeTypeB b " + 
    "where a.id = b.otherId"); 

try (QueryCursor<List<?>> cursor = cache.query(sql) { 
    for (List<?> row : cursor) 
    System.out.println("Row: " + row); 
} 

Обратите внимание, что в этом случае объект будет возвращен в виде Serialized.

0

Прежде всего, выпуск с открытым исходным кодом GridGain теперь Apache Ignite, поэтому я бы рекомендовал переключиться.

В Ignite, вы можете вернуть именно те поля, которые нужно из запроса с использованием SqlFieldsQuery, например, так:

SqlFieldsQuery sql = new SqlFieldsQuery(
    "select fieldA1, fieldA2, fieldB3 from SomeTypeA a, SomeTypeB b " + 
    "where a.id = b.otherId"); 

try (QueryCursor<List<?>> cursor = cache.query(sql) { 
    for (List<?> row : cursor) 
    System.out.println("Row: " + row); 
} 

В GridGain с открытым исходным кодом Edtion, вы можете использовать GridGain поля запроса API, а также.

+0

Спасибо Dmitriy. Мы переключимся на Apache Ignite, однако нам понадобится неделя или две, и мы хотели бы завершить это до переключения. Как я уже упоминал, запрос полей будет работать, но в идеале мы получим объекты с обеих сторон, а не коллекцию полей. – dejan

Смежные вопросы