我正在尝试将持久层从普通的旧数据库(使用ScalaQuery)转换为MongoDB,我遇到了一个奇怪的问题。我使用Casbah驱动程序,它是官方MongoDB Java驱动程序的Scala包装器。 Java和Scala驱动程序定义 - 根据文档和我在Eclipse中打开它时的.jar概述 - 一个方法findOneById,它将一个DBObject作为参数(其中包含一个ID)。
但是,当我尝试访问它时,我在Eclipse和SBT中都得到了Scala编译器中缺少的方法异常 - Scala版本2.9.0-1,SBT 0.10.1。
可能是什么原因引起的?这可能是一个已知的SBT / Scala编译器错误吗?
我刚删除了整个存储库,所以所有依赖项都会被新下载,但这并没有解决问题。
答案 0 :(得分:0)
您确定在findOneById
个实例上致电MongoCollection
吗?
可能这是参数类型错误,正如我在文档中看到的那样(http://api.mongodb.org/scala/casbah/2.1.2/scaladoc/com/mongodb/casbah/MongoCollection.html) ,findOneById
应采用AnyRef类型的Id,并选择要返回的字段。
你应该尝试类似mongoCollection.findOneByID(1.asInstanceOf[Object])
的内容。
关于BBObject
,它似乎没有出现在参数列表中(除了作为将您请求的字段转换为DBObject
有用的隐式参数之外)。可能自上次发布以来该方法的签名已更改。
希望这会有所帮助。