使用 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)
部分
我有一个 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)
部分