gpt4 book ai didi

java - 如何在 cassandra 中的集合文字内使用绑定(bind)变量 - InvalidQueryException

转载 作者:行者123 更新时间:2023-12-02 01:00:15 26 4
gpt4 key购买 nike

我正在使用 com.datastax.driver.core.PreparedStatement 在 java 中准备 cassandra 查询

我的架构非常简单 - a key其类型为 textvalue类型 set<text> 。我正在准备这样的声明:

mySession.prepare("UPDATE a.table USING TTL :ttl SET value = value + {:value} WHERE key = :key ");

[这样做是为了向集合中添加一个值并具有单独的 ttl对于每个值]

在评估上述语句时出现此错误:

com.datastax.driver.core.exceptions.InvalidQueryException: Invalid set literal for value: bind variables are not supported inside collection literals
at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:49)
at com.datastax.driver.core.DriverThrowables.propagateCause(DriverThrowables.java:35)
at com.datastax.driver.core.AbstractSession.prepare(AbstractSession.java:86)

如何克服此异常并将我的变量绑定(bind)到 set<text> 类型的集合。或者,是否有一些更好/首选的方法来实现我的目标,即动态(使用不同的 TTL)将项目添加到 set在java中的cassandra中?

最佳答案

您可以执行以下操作:

PreparedStatement st = session.prepare("UPDATE test2 USING TTL :ttl SET value = value + :value WHERE name = :name ");
session.execute(st.bind()
.setInt("ttl",1)
.setSet("value", ImmutableSet.of("add this value"))
.setString("name","key1"));

关于java - 如何在 cassandra 中的集合文字内使用绑定(bind)变量 - InvalidQueryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60748220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com