我有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
我要查询的表是
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)
答案 0 :(得分:0)
我的不好,我错误地使用了查询子句。而不是
.where(QueryBuilder.eq(partitionKeyColumns(0), whereClauseList(0))).and(QueryBuilder.eq(partitionKeyColumns(1), whereClauseList(1)))
我需要做
.where(whereClauseList(0)).and(whereClauseList(1))
因为列表已经有QueryBuilder.eq("bucket", id.bucket)
部分