2011-11-18 2 views
2

평범한 옛날 데이터베이스 (ScalaQuery 사용)에서 MongoDB로 영속성 레이어를 변환하려고하는데 이상한 문제가 있습니다. 공식 MongoDB Java 드라이버를 스칼라 래퍼로 사용하는 Casbah 드라이버를 사용합니다. Java와 Scala 드라이버는 문서와 Eclipse에서 열 때 .jar의 개요에 따라 하나의 DBObject를 매개 변수로 사용하는 findOneById 메소드 (ID가있는 메소드)를 정의합니다.MongoDB 자바/스칼라 드라이버 - 누락 된 메소드

그러나 액세스하려고하면 스칼라 컴파일러에서 Eclipse와 SBT-Scala 버전 2.9.0-1, SBT 0.10.1에서 누락 된 메서드 예외가 발생합니다.

이 문제의 가능한 원인은 무엇입니까? 이것은 아마도 알려진 SBT/Scala 컴파일러 버그입니까?

모든 저장소가 새롭게 다운로드되도록 저장소 전체를 제거했으나 문제가 해결되지 않았습니다.

답변

0

MongoCollection 인스턴스에서 findOneById으로 전화 하시겠습니까?

설명서에 나와있는 것처럼 매개 변수 유형이 잘못되었을 수도 있습니다 (http://api.mongodb.org/scala/casbah/2.1.2/scaladoc/com/mongodb/casbah/MongoCollection.html).), findOneById은 AnyRef 유형의 ID를 취하고 반환 할 필드를 optionnaly해야합니다.

mongoCollection.findOneByID(1.asInstanceOf[Object])과 같은 것을 시도해야합니다.

BBObject에 대해서는 매개 변수 목록에 표시되지 않는 것 같습니다 (제외 할 항목은 DBObject으로 요청한 필드를 변환하는 데 유용한 암시 적 매개 변수 제외). 어쩌면 이전 릴리스 이후 메소드의 서명이 변경되었을 수도 있습니다.

희망이 도움이 될 것입니다.