簡體   English   中英

如何在 cassandra 中的集合文字中使用綁定變量 - InvalidQueryException

[英]How to use bind variable inside collection literal in cassandra - InvalidQueryException

我正在使用com.datastax.driver.core.PreparedStatement在 java 中准備一個 cassandra 查詢

我的模式很簡單-一個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)

如何克服此異常並將我的變量綁定到set<text>類型的set<text> 或者,是否有一些更好/首選的方法來實現我的目標,即從 Java 動態(使用不同的 TTL)向 cassandra 中的set添加項目?

您可以執行以下操作:

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"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM