![](/img/trans.png)
[英]How to bind variables inside collection literals in Cassandra 3.0 using java?
[英]How to use bind variable inside collection literal in cassandra - InvalidQueryException
我正在使用com.datastax.driver.core.PreparedStatement
在 java 中准備一個 cassandra 查詢
我的模式很簡單-一個key
是類型的text
和value
型的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.