我从升级现有的代码Rogue 1.1.8
,以2.0.0
和lift-mongodb-record
从2.4-M5 to 2.5
。
我在编写MongoCaseClassField
包含scala枚举的过程中遇到困难,我确实可以使用一些帮助。
例如,
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]的证据参数的隐含值。并且(_.myCaseClass setTo myCaseClass)
我们过去使用Rogue 1.1.8来运行此功能,方法是使用自己的版本MongoCaseClassField
,从而使#formats方法可重写。但是该功能已包含在2.5-RC6的lift-mongodb-record中,所以我们认为现在应该可以使用?