使用 Datastax Cassandra 驱动程序时出现无效类型错误

Invalid type error when using Datastax Cassandra Driver

我有一个 case class 代表分区键值。

case class UserKeys (bucket:Int,
                    email: String)

我创建查询 Clauses 如下:

def conditions(id: UserKeys):List[Clauses] = List(
    QueryBuilder.eq("bucket", id.bucket), //TODOM - pick table description from config/env file.
    QueryBuilder.eq("email", id.email)
  )

并按如下方式使用查询

val selectStmt =
      select()
        .from(tablename)
        .where(QueryBuilder.eq(partitionKeyColumns(0), whereClauseList(0))).and(QueryBuilder.eq(partitionKeyColumns(1), whereClauseList(1))) 
        .limit(1)

我收到以下错误。

com.datastax.driver.core.exceptions.InvalidTypeException: Value 0 of type class com.datastax.driver.core.querybuilder.Clause$SimpleClause does not correspond to any CQL3 type

问题 1 - 我做错了什么? 查询适用于 cqlsh

我查询的table是

CREATE TABLE users (
    bucket int,
    email text,
    firstname text,
    lastname text,
    authprovider text,
    password text,
    PRIMARY KEY ((bucket, email), firstname, lastname)

问题 2 - 有没有办法打印包含查询子句的 List?我试过了,但我收到了这段难以理解的文字。

List(com.datastax.driver.core.querybuilder.Clause$SimpleClause@2389b3ee, com.datastax.driver.core.querybuilder.Clause$SimpleClause@927f81)

糟糕,我错误地使用了查询子句。而不是

.where(QueryBuilder.eq(partitionKeyColumns(0), whereClauseList(0))).and(QueryBuilder.eq(partitionKeyColumns(1), whereClauseList(1)))

我需要做

.where(whereClauseList(0)).and(whereClauseList(1)) 

因为List已经有QueryBuilder.eq("bucket", id.bucket)部分