私はこのようなケースクラスと特性を持っています。
trait A {
val _id: Option[A] = None
val d: Option[List[D]] = None
val id: Option[String] = None
}
object A {
def apply(className: String): Element = Class.forName(className: String).asInstanceOf[A]
def unapply(element: A): Option[String] = Option(this.getClass.getName)
}
case class B extends A (
value1: String, value2: A, sub: Option[TypeY] = None
)
object B {
import play.api.libs.functional.syntax._
implicit val AFormatter: Format[A] = Json.format[A]
implicit val BFormatter: Format[B] = Json.format[B]
implicit val Breads:Reads[B] = Json.reads[B]
implicit val BWrites = Json.writes[B]
}
クラスBの場合に対応したデータを挿入しながら、値2が「$ A」として保存されている:「abc.xyz.data」、「A」は、形質名と「abc.xyzあります。 data "はパッケージ名です。これは私の適用と適用解除の方法のためですか?これを解決するには?
編集:DBセーブコード
私はDBにデータを保存するためにReactiveMongoライブラリを使用しています。
あなたはどちらのlibを使用していますか?あなたは何を試しましたか? – cchantep
私は問題は、あなたが特性を直列化しようとしていると思います。そして、 'value2'の値が何であるかは関係ありません。シリアライザが扱うべきすべての情報は、それが' A'型であるということです。 – pedrofurla
@pedrofurla:jsonのシリアライゼーション/デシリアライゼーションを追加しないと、「適用されていない、実装されていない」というエラーが表示されます。 – sowmiyaksr