我正在将现有代码从 Rogue 1.1.8
升级到 2.0.0
,同时将 lift-mongodb-record
从 2.4-M5
升级到 2.5
。
我在编写包含 Scala 枚举的 MongoCaseClassField
方面遇到了一些困难,真的需要一些帮助。
例如,
object MyEnum extends Enumeration {
type MyEnum = Value
val A = Value(0)
val B = Value(1)
}
case class MyCaseClass(name: String, value: MyEnum.MyEnum)
class MyMongo extends MongoRecord[MyMongo] with StringPk[MyMongo] {
def meta = MyMongo
class MongoCaseClassFieldWithMyEnum[OwnerType <: net.liftweb.record.Record[OwnerType], CaseType](rec : OwnerType)(implicit mf : Manifest[CaseType]) extends MongoCaseClassField[OwnerType, CaseType](rec)(mf) {
override def formats = super.formats + new EnumSerializer(MyEnum)
}
object myCaseClass extends MongoCaseClassFieldWithMyEnum[MyMongo, MyCaseClass](this)
/// ...
}
当我们试图写入该字段时,会出现以下错误:
找不到隐式参数类型为 com.foursquare.rogue.BSONType[MyCaseClass] 的证明参数 .and(_.myCaseClass setTo myCaseClass)
在 Rogue 1.1.8 中,我们使用自己版本的 MongoCaseClassField
,使 #formats 方法可重写,以前他是管用的。但此功能已经包含在 lift-mongodb-record 中 2.5-RC6 版本中,所以现在应该可以使用吗?