130

Rogue 1.1.8既存のコードを からへ2.0.0、およびlift-mongodb-recordからにアップグレードしてい2.4-M5 to 2.5ます。

スカラ列挙型を含むものを書くのに苦労して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) の証拠パラメーターの暗黙的な値が見つかりませんでした

MongoCaseClassFieldRogue 1.1.8 では、 #formats メソッドをオーバーライド可能にする独自のバージョンの を使用して、これを機能させていました。しかし、その機能は 2.5-RC6 の lift-mongodb-record に含まれていたので、これでうまくいくはずだと考えましたか?

4

1 に答える 1