Mongodb Casbah:无隐式视图可用错误

Mongodb Casbah:无隐式视图可用错误,mongodb,scala,playframework,casbah,salat,Mongodb,Scala,Playframework,Casbah,Salat,在Play应用程序中,使用Salat和Casbah,我试图将DBObject反序列化为Task类型的对象,但调用时出现此错误。asObject: com.mongodb.casbah.Imports.DBObject=> com.mongodb.casbah.Imports.MongoDBObject。错误发生在 包含默认参数的应用程序 使用.asDBObject正确序列化对象,并按预期写入数据库 是什么导致了这种行为,可以采取什么措施来解决它?以下是所涉及的模型: package models

在Play应用程序中,使用Salat和Casbah,我试图将
DBObject
反序列化为
Task
类型的对象,但调用
时出现此错误。asObject

com.mongodb.casbah.Imports.DBObject=> com.mongodb.casbah.Imports.MongoDBObject。错误发生在 包含默认参数的应用程序

使用
.asDBObject
正确序列化对象,并按预期写入数据库

是什么导致了这种行为,可以采取什么措施来解决它?以下是所涉及的模型:

package models

import db.{MongoFactory, MongoConnection}

import com.novus.salat._
import com.novus.salat.global._
import com.novus.salat.annotations._
import com.mongodb.casbah.Imports._
import com.mongodb.casbah.commons.Imports._
import play.api.Play


case class Task(label: String, _id: ObjectId=new ObjectId)

object Task {

  implicit val ctx = new Context {
    val name = "Custom_Classloader"
  }

  ctx.registerClassLoader(Play.classloader(Play.current))

  val taskCollection = MongoFactory.database("tasks")

  def create(label: String): Task = {
    val task = new Task(label)
    val dbObject = grater[Task].asDBObject(task)
    taskCollection.save(dbObject)
    grater[Task].asObject(dbObject)
  }

  def all(): List[Task] = {
    val results = taskCollection.find()
    val tasks = for (item <- results) yield grater[Task].asObject(item)
    tasks.toList
  }
}

有关创建自定义上下文的说明:

  • 首先,将自定义上下文定义为
    implicit val ctx=新上下文{/*自定义行为*/}
    在包对象中
  • 停止导入com.novus.salat.global.\ucode>
  • 而是到处导入您自己的自定义上下文

来源:

Typo或err:double import of
com.mongodb.casbah.Imports.\u
dep.是的,这是一个拼写错误:)但错误不是由它引起的。是的,就是它!我不得不停止导入全局上下文,并稍微调整自定义上下文。谢谢你的帮助!
casbah: "2.8.1"
scala: "2.11.6"
salat: "1.9.9"