【发布时间】:2018-07-12 16:42:36
【问题描述】:
我无法使用datastax 驱动程序upsert 一行。
Cassandra 表中的数据存储方式如下:
tag | partition_info
------------+--------------------------------------------------
sometag | {{year: 2018, month: 1}, {year: 2018, month: 2}}
tag 是主键,partition_info 是 UDT
CREATE TYPE codingjedi.tag_partitions (
year bigint,
month bigint
);
如果tag 不存在,我希望它会被创建。如果tag 存在,则新的udt 值将附加到旧值。我想我不能使用insert,因为它会覆盖以前的值,即这不起作用
QueryBuilder.insertInto(tableName).value("tag",model.tag)
.value("partition_info",setAsJavaSet(Set(partitionsInfo)))
我正在尝试使用更新,但它不起作用。 Datastax 驱动程序给出错误java.lang.IllegalArgumentException 用于以下查询
QueryBuilder.update(tableName).`with`(QueryBuilder.append("partition_info",setAsJavaSet(Set(partitionsInfo))))
.where(QueryBuilder.eq("tag", id.tag))
我尝试使用add 和append 作为主键,但得到错误PRIMARY KEY part tag found in SET part
QueryBuilder.update(tableName).`with`(QueryBuilder.add("tag",id.tag))
.and(QueryBuilder.append("partition_info",setAsJavaSet(Set(partitionsInfo)))) .where(QueryBuilder.eq("tag", id.tag))
【问题讨论】:
标签: cassandra datastax-java-driver