在Java与CQL中表示Set

我是cassandra的新手,我尝试将一组数据添加到表中.我的表看起来像:

CREATE TABLE myTable (id int, name varchar, mySet set<uuid>, PRIMARY KEY (id));

我遇到的问题是当我做我的请求时,类型不兼容,Java中的集合的字符串表示是[uuid1,uuid2,…],而cql中的表示是{‘uuid1′,’uuid2’, …}

session.execute("INSERT INTO myTable (id , name, mySet) VALUES (" + myID + ", '" + myName +"' ," + mySet + ");");

所以,如果有一个函数或库可以直接解决这个问题,你知道吗?非常感谢.

最佳答案
而不是将设置内容附加到查询字符串(使用set .toString()实现),您可以改为执行以下操作(需要cassandra 2.0):

session.execute("INSERT INTO myTable (id, name, mySet) VALUES (?, ?, ?));", myId, myName, mySet);

然后,驱动程序将为您正确注入Set.您也可以考虑使用BoundStatementQueryBuilder来完成此任务.

转载注明原文:在Java与CQL中表示Set - 代码日志