2014-09-07 2 views
1

에 QueryBuilder.eq을 방지하기 위해, where 절은 일반적으로 다음과 같이 끝 :수입 스칼라

Error:(25, 75) type mismatch; 
found : Boolean 
required: com.datastax.driver.core.querybuilder.Clause 

것은 그것이 내가이 일을 얻으려면 항상 얻을 수 QueryBuilder.eqeq 접두사해야 그것은 작동합니다 :

val select = QueryBuilder.select() 
    .all() 
    .from("addressbook", "contact") 
    .where(QueryBuilder.eq("type", "Friend")) 

eq은 정적 방법이므로 QueryBuilder._을 가져 오려고했으나 도움이되지 않았습니다. 이 예제에서보다 간결한 양식을 사용하기 위해 누락 된 설정은 무엇입니까?

+0

접두어없이 'eq'를 사용하려고하면 어떤 오류가 발생합니까? –

+0

클래스 내에있는 경우 접두사없이 static 메서드를 호출 할 수 있어야합니다 (범위 현명한). 당신이 '안에'있을 때 '이'의 가치가 무엇인지 확인할 수 있습니까? – phact

+0

위 오류가 추가되었습니다. 어떻게 든 이퀄라이저 (eq)가 어딘가에서 가져온 것처럼 보이지만, DataStax와 관련된 것 이외의 수입은 없다. –

답변

2

eqAnyRef에 정의 된 표준 스칼라 메서드입니다 (스칼라의 경우 ==은 Java에 대한 것임). 접두사가없는 버전은 명령문 정의를 둘러싸는 객체의 eq에 대한 호출로 해결 될 수 있습니다. 당신이 할 수있는

한 가지는 가져 오기의 이름을 바꿀 수 있습니다 :

import QueryBuilder.{eq => equ} // TODO find a better name :-) 

우리는 심지어 제공 할 수있는 내장 드라이버 별명, 나는 다른 사람이로 실행됩니다 상상.

더 깨끗한 해결책이 있다면 나는 그것을 알고 싶어합니다.

+0

고마워. 그건 의미가 있습니다. 그래서 이것은 디폴트 스칼라와의 불행한 대립을 가져옵니다. –