2015-04-22 57 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 *重複這個工作,而不是使用緩存。