如何在使用Java编写的Cassandra 3.0中将变量绑定到集合字面量中?

4
我有一个Java应用程序,其中我正在解析数据并将其更新到我的Cassandra 3.0数据库中。到目前为止,我的操作都非常成功,直到涉及到用户定义类型的列时出现了问题。
String statement_update = "UPDATE table SET "
            + "elements = elements + [{name: ? , associations: []}]"
            + " WHERE id = ? 

在我的Cassandra 3.0数据库中,elements是一个用户定义的类型,由名称(数据类型:text)和关联(数据类型:list)组成。

PreparedStatement prepared_update = session.prepare(statement_update);

bound_update = prepared_update.bind(name, id);

变量nameid的类型为String。

我一直试图使用预处理语句将新解析的数据更新到我的表中;但是,在解析数据后,我无法向我的元素列添加更多元素。我收到错误消息:“对于elements的无效列表字面值:不支持在集合文字中使用绑定变量。” 如何解决这个问题?

我已尝试更改statement_update语句为"UPDATE table SET elements = elements + ? WHERE id = ?"的方式,但是我不知道要添加到bind语句中的是什么样的列表(甚至不知道它是否是列表)。

为了满足我的用户定义类型:elements,需要什么?


你看过这个吗?https://dev59.com/4I7ea4cB1Zd3GeqPF8xm - Zhong Hu
1个回答

0

尝试另一种更新表示法:

    session := getGocqlSession()
    err := session.Query(
        "UPDATE table SET mymapcolumn[?] = ? WHERE rowkey = ?",
        mapKey, mapValue, rowKey,
    ).Exec()

这对我有用。

我在Go上做过这个,但也许这种方法会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接