java 中的集合表示与 CQL
Representation of Set in java versus CQL
我是 cassandra 的新手,我尝试向 table 添加一组数据。我的 table 看起来像:
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 + ");");
如果有函数或库可以直接解决这个问题,你们知道吗?非常感谢。
您可以执行以下操作(需要 cassandra 2.0+),而不是将设置内容附加到查询字符串(使用 set .toString() 实现):
session.execute("INSERT INTO myTable (id, name, mySet) VALUES (?, ?, ?));", myId, myName, mySet);
然后驱动程序会负责为您正确注入 Set。您也可以考虑使用 BoundStatement or QueryBuilder 来完成此操作。
我还建议您也使用准备好的语句。除了其他原因,C* 还做了很多工作,如果它是 p_stmnt,它将为任何查询缓存,使您下次发出它们时更快。不使用 p_stmnts 将使 c* 一遍又一遍地重复该工作,而不是使用缓存。
我是 cassandra 的新手,我尝试向 table 添加一组数据。我的 table 看起来像:
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 + ");");
如果有函数或库可以直接解决这个问题,你们知道吗?非常感谢。
您可以执行以下操作(需要 cassandra 2.0+),而不是将设置内容附加到查询字符串(使用 set .toString() 实现):
session.execute("INSERT INTO myTable (id, name, mySet) VALUES (?, ?, ?));", myId, myName, mySet);
然后驱动程序会负责为您正确注入 Set。您也可以考虑使用 BoundStatement or QueryBuilder 来完成此操作。
我还建议您也使用准备好的语句。除了其他原因,C* 还做了很多工作,如果它是 p_stmnt,它将为任何查询缓存,使您下次发出它们时更快。不使用 p_stmnts 将使 c* 一遍又一遍地重复该工作,而不是使用缓存。