在查看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._
,因为eq
是一种静态方法,但这并没有帮助。我缺少什么设置来使用示例中更简洁的表单?
答案 0 :(得分:2)
eq
是在AnyRef
上定义的标准Scala方法(对于Scala来说,==
对Java来说是什么)。非前缀版本可能解析为在包含语句定义的对象上调用eq
。
您可以做的一件事是重命名导入:
import QueryBuilder.{eq => equ} // TODO find a better name :-)
我们甚至可以为驱动程序提供内置别名,因为我想其他人会碰到这个。
如果有更清洁的解决方案,我有兴趣了解它。