2015-04-22 55 views
4

我是cassandra的新成员,我尝试将一组数据添加到表中。我的表如下所示:在java与CQL中的表示集合

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

,我遇见了当我做我的请求的类型不兼容,在Java中的一组字符串表达式的问题[UUID1,UUID2,...]和代表性在定制列表为{“UUID1”,“UUID2”,...}

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

所以你知道你们是否有一个功能或这将直接解决这个问题的库。非常感谢。

回答

5

而是附加设定内容的查询字符串(它使用一套的ToString()实现),你可以改为执行以下操作(卡桑德拉2.0+需要):

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

司机会再取谨慎为您注入适当的Set。您也可以考虑使用BoundStatementQueryBuilder来完成此操作。

3

我也建议你也使用准备好的语句。除了其他原因之外,C *还会执行一堆工作,如果它是p_stmnt,它将缓存任何查询,从而在您下次发布查询时更快。不使用p_stmnts会让c *重复这个工作,而不是使用缓存。