如何在 cassandra 中为 list<varchar> <-> java.util.List 匹配编解码器

How to match codec in cassandra for list<varchar> <-> java.util.List

我在 cassandra 中有一列 info map<text, frozen<list<text>>>。 尝试通过以下代码在 java 中检索此地图数据。

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]

我不知道如何解决这个嵌套类型的编解码器异常。有什么方法可以解决?

我建议使用 TypeTokens.listOf(TypeToken) 实用程序方法创建一个 TypeToken<List<String>> 并将其用作检索地图的元素类型,即:

Map<String, List<String>> info = row.getMap("info", TypeToken.of(String.class), TypeTokens.listOf(String.class));