2016-12-15 11 views
1

私はcassandraに列info map<text, frozen<list<text>>>を持っています。 java内のこのマップデータを下のコードから取得しようとしています。 リストのためにcassandraのコーデックを一致させる方法<varchar><-> java.util.List

for (Row row : conn.getSession().execute("SELECT info FROM demo.variants where chr = '" +chr + "' and pos = " + pos)) { 
    Map<String, List> map = row.getMap("info", String.class, List.class); 
    System.out.println(map); 
} 

は私がこのネストされたタイプのコーデック例外を解決する方法を見つけ出すことができませんでしたエラー

com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [list<varchar> <-> java.util.List] 

を取得しています、この方法を行う場合。これを解決する方法は何ですか?

答えて

3

私はすなわち、要素の型としてマップを取得することTypeToken<List<String>>を作成して使用することTypeTokens.listOf(TypeToken)ユーティリティメソッドを使用することをお勧めします。:

Map<String, List<String>> info = row.getMap("info", TypeToken.of(String.class), TypeTokens.listOf(String.class)); 
関連する問題