Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导入Datastax QueryBuilder以避免scala中的QueryBuilder.eq_Scala_Cassandra_Datastax Java Driver - Fatal编程技术网

导入Datastax QueryBuilder以避免scala中的QueryBuilder.eq

导入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.

在查看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.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导入发生了不幸的冲突。