Spring Data & Cassandra CQL,我们可以创建 table 有一个地图列表,然后查询它吗?
Spring Data & Cassandra CQL, can we create table that have a List of Map, then query it?
我要求在 cassandra 中创建包含地图列表的 table 的可能性!像那样:
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 数据中我有这个查询:
findAll()
然后我得到这个错误:
Query; CQL [SELECT * FROM agence;]; Codec not found for requested operation: [map<varchar, varchar> <-> java.util.Map]
不知道是cassandra配置不好还是使用不好!!
有人有什么建议吗?
最后我得到了一个解决方案:
/** The conseillers. */
@Column(value = "conseillers")
@Frozen
@FrozenKey
@FrozenValue
private Set<Map<String, String>> conseillers;
像这样我们可以map map <-> 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)));
}
我要求在 cassandra 中创建包含地图列表的 table 的可能性!像那样:
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 数据中我有这个查询:
findAll()
然后我得到这个错误:
Query; CQL [SELECT * FROM agence;]; Codec not found for requested operation: [map<varchar, varchar> <-> java.util.Map]
不知道是cassandra配置不好还是使用不好!!
有人有什么建议吗?
最后我得到了一个解决方案:
/** The conseillers. */
@Column(value = "conseillers")
@Frozen
@FrozenKey
@FrozenValue
private Set<Map<String, String>> conseillers;
像这样我们可以map map <-> 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)));
}