Cassandra 如何使用java驱动程序向CQL集合类型添加单个元素

Cassandra 如何使用java驱动程序向CQL集合类型添加单个元素,cassandra,cql3,datastax-java-driver,Cassandra,Cql3,Datastax Java Driver,我试图使用datastax java驱动程序和绑定语句向集合类型添加单个元素,即(下面的语法未测试) 创建表声明( id bigint主键, 声明集 ); 更新索赔集索赔=索赔+:索赔,其中id=:id 当我运行我的BoundStatement时,我收到请求操作的未找到编解码器:[set java.lang.String]我真的必须编写编解码器吗 使用CQL将(+)附加到集合需要一个集合。因此,驱动程序在此处期望的是集,而不是字符串。要解决此问题,您需要将字符串值包装在一个集合中,即: Pre

我试图使用datastax java驱动程序和绑定语句向集合类型添加单个元素,即(下面的语法未测试)

创建表声明(
id bigint主键,
声明集
);
更新索赔集索赔=索赔+:索赔,其中id=:id
当我运行我的
BoundStatement
时,我收到请求操作的
未找到编解码器:[set java.lang.String]
我真的必须编写编解码器吗

使用CQL将(
+
)附加到
集合
需要一个
集合
。因此,驱动程序在此处期望的是
,而不是
字符串
。要解决此问题,您需要将字符串值包装在一个集合中,即:

PreparedStatement prepared=session.prepare(“更新索赔集索赔=索赔+:索赔,其中id=:id”);
session.execute(prepared.bind(Collections.singleton(“value”),id));

我尝试了您建议使用的语句
cassandra driver core 3.4.0
,但我遇到了以下问题:
声明的无效集合文字:集合文字中不支持绑定变量com.datastax.driver.core.exceptions.InvalidQueryException:声明的无效集合文字:集合中不支持绑定变量文字
。有什么想法吗?Hrmm,我可以发誓这是被支持的,你使用的是什么版本的C*呢?我会改正的,它似乎不起作用,我会更新我的答案。谢谢你的更正。谢谢你的帮助。工作得很有魅力。另外,如果不使用预先准备好的语句(不推荐使用),那么像这样将值内联起来工作:
。。。SET claished=claished+{'STRING\u VALUE\u HERE'}
如果claished是用户定义的类型,那么注册其编解码器似乎很棘手。有这样的例子吗?
CREATE TABLE claims (
  id bigint PRIMARY KEY,
  claimed set<text>
);

UPDATE claims SET claimed = claimed + :claimed WHERE id = :id