导入Datastax QueryBuilder以避免scala中的QueryBuilder.eq
在查看Datastax Cassandra驱动程序的示例时,导入Datastax QueryBuilder以避免scala中的QueryBuilder.eq,scala,cassandra,datastax-java-driver,Scala,Cassandra,Datastax Java Driver,在查看Datastax Cassandra驱动程序的示例时,where子句的结尾通常如下所示: val select = QueryBuilder.select() .all() .from("addressbook", "contact") .where(eq("type", "Friend")) 但是,当我在scala中尝试此操作时,会出现以下错误: Error:(25, 75) type mismatch; found : Boolean required: com.
where
子句的结尾通常如下所示:
val select = QueryBuilder.select()
.all()
.from("addressbook", "contact")
.where(eq("type", "Friend"))
但是,当我在scala中尝试此操作时,会出现以下错误:
Error:(25, 75) type mismatch;
found : Boolean
required: com.datastax.driver.core.querybuilder.Clause
要使其工作,我必须始终在eq
前面加上QueryBuilder.eq
以使其工作:
val select = QueryBuilder.select()
.all()
.from("addressbook", "contact")
.where(QueryBuilder.eq("type", "Friend"))
我尝试导入
QueryBuilder.\u
,因为eq
是一个静态方法,但没有帮助。使用示例中更简洁的表单时,我缺少了什么设置?eq
是在AnyRef
上定义的标准Scala方法(它对于Scala就像=
对于Java一样)。无前缀版本可能解析为对包含语句定义的对象调用eq
您可以做的一件事是重命名导入:
import QueryBuilder.{eq => equ} // TODO find a better name :-)
我们甚至可以为驱动程序提供一个内置别名,我想其他人可能会遇到这种情况
如果有一个更干净的解决方案,我很想知道。如果您尝试使用不带前缀的
eq
,会出现什么错误?您应该只能在类中调用不带前缀的静态方法(范围方面)。当你在where中时,你能检查“this”的值是多少吗?上面添加了错误。似乎eq是从某处进口的,但我没有任何进口,除了税务相关的东西。这是有道理的。因此,这与默认的scala导入发生了不幸的冲突。