如何使用 java 驱动程序将单个元素添加到 CQL 集类型

How do you add a single element to a CQL set type using the java driver

我正在尝试使用 datastax java 驱动程序和绑定语句将单个元素添加到集合类型,即(以下语法未测试)

CREATE TABLE claims (
  id bigint PRIMARY KEY,
  claimed set<text>
);

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

当我运行我的BoundStatement,我收到Codec not found for requested operation: [set<varchar> <-> java.lang.String]我真的必须写一个编解码器吗?

CQL 将 (+) 附加到 set 期望 set。因此,驱动程序在这里期望 Set<String> 而不是 String。要解决此问题,您需要将 String 值包装在一个集合中,即:

PreparedStatement prepared = session.prepare("UPDATE claims SET claimed = claimed + :claimed WHERE id = :id");
session.execute(prepared.bind(Collections.singleton("value"), id));