2

我正在尝试将持久层从普通的旧数据库(使用 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 编译器错误吗?

我刚刚删除了整个存储库,因此所有依赖项都可以重新下载,但这并没有解决问题。

4

1 回答 1

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,它似乎没有出现在参数列表中(除非作为隐式参数,用于将您请求的字段转换为 a DBObject)。也许该方法的签名自上一个版本以来发生了变化。

希望这会有所帮助。

于 2011-11-18T16:19:01.213 回答