2016-09-23 2 views
3

Я использую карту в одном из моей таблицы, как показано ниже:Невозможно прочитать карту от Кассандры

media map<UUID, frozen<map<int, varchar>>> 

Alhough Я был в состоянии успешно вставить/обновление в этой карте, не мог читать из него.

Я использую драйвер datastax Java 3.0.0

До сих пор я попытался это:

Map<UUID, Map> media = row.getMap("media", UUID.class, Map.class); 

Но эта линия дает ниже исключения:

com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [map<int, varchar> <-> java.util.Map] 

Как я могу читать из это поле?

ответ

0

Вы пытаетесь использовать метод GettableByNameData.getMap(String, Class, Class). Вместо этого, чтобы получить сложный тип данных, например Map, вы можете использовать метод GettableByNameData.getMap(String, TypeToken, TypeToken).

import com.google.common.reflect.TypeToken; 

TypeToken uuidToken = new TypeToken<UUID>() {}; 
TypeToken mapToken = new TypeToken<Map<Integer, String>>() {}; 

Map<UUID, Map<Integer, String>> media = row.getMap("media", uuidToken, mapToken); 
+0

Спасибо. Оно работает.. –