我正在升级现有的代码从 Rogue 1.1.8
到 2.0.0
和 lift-mongodb-record
从 2.4-M5 to 2.5
。
我在编写包含 scala enum 的 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)
/// ...
}
当我们尝试写入这个字段时,会得到以下错误:
类型的证据参数找不到隐式值 BSONType [ MyCaseClass ] . 和(_. myCaseClass 设置为 myCaseClass)
我们曾经在 Rogue 1.1.8中使用我们自己版本的 MongoCaseClassField
,这使得 # format 方法可以被覆盖。但是这个功能已经包含在2.5-RC6的 Lift-mongodb-record 中了,所以我们认为这个功能现在应该可以工作了吗?