我是cassandra的新手,我尝试将一组数据添加到表中。我的表看起来像:
CREATE TABLE myTable (id int, name varchar, mySet set<uuid>, PRIMARY KEY (id));
我遇到的问题是当我做我的请求时类型不兼容,Java中的集合的字符串表示是[uuid1,uuid2,...]并且cql中的表示是{&#39; uuid1& #39;,&#39; UUID2&#39;,...}
session.execute("INSERT INTO myTable (id , name, mySet) VALUES (" + myID + ", '" + myName +"' ," + mySet + ");");
所以你知道有没有函数或库可以直接解决这个问题。非常感谢。
答案 0 :(得分:5)
不是将设置内容附加到查询字符串(使用set .toString()实现),而是执行以下操作(需要cassandra 2.0+):
session.execute("INSERT INTO myTable (id, name, mySet) VALUES (?, ?, ?));", myId, myName, mySet);
然后,驱动程序将为您正确注入Set。您也可以考虑使用BoundStatement或QueryBuilder来完成此操作。
答案 1 :(得分:3)
我还建议你也使用预备语句。除了其他原因之外,如果它是p_stmnt,C *会为任何查询执行一系列工作,在下次发布它们时会更快。不使用p_stmnts将使c *重复一遍又一遍地工作,而不是使用缓存。