我正试图在"IN";CQL WHERE子句中的关键字。
我试过这个
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";投掷
找不到请求操作的编解码器:[list<->scala.collection.invariable.$colon$colon]
如何绑定此列表?
由于数据税库是用Java编写的,BoundStatement需要一个Java集合。您可以显式地将Scala集合转换为Java集合,如下所示:
boundStatement.bind(new java.util.ArrayList[String](ids.asJava))
请注意,隐式转换在这里不起作用,因为bind((方法接受java.lang.Object类型的参数,而不是更具体的参数。
您还应该能够执行:
boundStatement.bind().setList(0, ids.asJava)
或者:
boundStatement.bind().setList(0, ids.asJava, classOf[String])