0
我有一個案例類和像這樣的特質。
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。數據「是包名稱。這是因爲我的申請和不申請的方法?如何解決這個問題?
編輯:DB保存代碼
我使用ReactiveMongo庫將數據保存到數據庫中。
def collB : JSONCollection = db.collection[JSONCollection]("B")
def indbNewB(b: B) = {
collB.insert(B)
}
你在使用哪個庫?你已經嘗試了什麼? – cchantep
我認爲問題在於你試圖序列化一個特質。不管value2是什麼值,串行器必須使用的所有信息都是類型'A'。 – pedrofurla
@pedrofurla:如果我不添加json序列化/反序列化,那麼我會得到「特質A不適用,未應用實現」錯誤。 – sowmiyaksr