我试图在CQL WHERE子句中的“IN”关键字之后绑定Scala列表。
我试过这个
val session: com.datastax.driver.core.Session = ...
val deleteStatement = session.prepare(s"DELETE FROM table_name WHERE id IN ?;")
def deleteById(ids: List[String]): Try[Boolean] = {
val boundStatement = new BoundStatement(deleteStatement)
boundStatement.bind(ids)
session.execute(boundStatement).wasApplied()
}
但是“boundStatement.bind”会引发
找不到所请求操作的编解码器:[列出<->标量.集合.不可变.$冒号$冒号]
如何绑定此列表?
2条答案
按热度按时间uklbhaso1#
您还应该能够:
或者:
y1aodyip2#
因为datastax库是用Java编写的,所以BoundStatement需要一个Java集合。你可以显式地将Scala集合转换为Java集合,如下所示:
请注意,隐式转换在这里不起作用,因为bind()方法接受类型为java.lang.Object的参数,而不是更具体的参数。