Spring Data&Cassandra CQL,我们可以创建具有Map List的表,然后查询它吗?

时间:2018-08-01 18:16:26

标签: cassandra-3.0 spring-data-cassandra

我正在要求在cassandra中创建一个包含Map列表的表的可能性!像这样:

CREATE TABLE IF NOT EXISTS agence(
id timeuuid,
code text,
libelle text,   
adresse set<frozen<map<text,text>>>,
conseillers  set<frozen<map<text,text>>>,
compagnie_id timeuuid,

...

在Spring Data中,我有以下查询:

findAll()

然后我收到此错误:

Query; CQL [SELECT * FROM agence;]; Codec not found for requested operation: [map<varchar, varchar> <-> java.util.Map]

我不知道cassandra是否配置错误或使用不当!

请问有人有建议吗?

1 个答案:

答案 0 :(得分:0)

最后我得到一个解决方案:

    /** The conseillers. */
@Column(value = "conseillers")
@Frozen
@FrozenKey
@FrozenValue
private Set<Map<String, String>> conseillers;

像这样,我们可以映射地图<-> java.util.Map

    for(Row row : cassandraOperations.select("SELECT conseillers FROM agence", Row.class)){
        Set<Map<String, String>> info = mapperCassandra(row, "conseillers");
    }
}

private Set<Map<String, String>> mapperCassandra(Row row, String type) {
    return  row.getSet(type,    TypeTokens.mapOf(TypeToken.of(String.class), TypeToken.of(String
            .class)));

}