我在为我与 squeryl 一起使用并扩展 KeyedEntity 的案例类实现 Json Write 时遇到了一个问题。它看起来像这样:
case class Order(fk_soc : Int, order_date: String, date_creation: Timestamp,fk_uther_author: Int, fk_statut : Int, tva : Option[Double], total_ht: Option[Double],total_ttc: Option[Double], note: Option[String]) extends KeyedEntity[Int] {
val id : Int = 0
val ref : String = ""
val date_modif : Option[Timestamp] = Some(new Timestamp(DateTime.now.getMillis))
}
我写道:
implicit val orderFormat : Writes[Order] = (
( __ \ 'fk_societe).write[Int] and
( __ \ 'order_date).write[String] and
( __ \ 'date_creation).write[Timestamp] and
( __ \ 'fk_user_author).write[Int] and
( __ \ 'fk_statut).write[Int] and
( __ \ 'tva).write[Option[Double]] and
( __ \ 'total_ht).write[Option[Double]] and
( __ \ 'total_ttc).write[Option[Double]] and
( __ \ 'note).write[Option[String]]
)(unlift(Order.unapply))
它工作正常,除了我需要在我的 json 中包含“id”字段但由于它在我的案例类的主体中,它不属于生成的值。因此,如果我将“id”字段添加到我的 Writes 中:
implicit val orderFormat : Writes[Order] = (
( __ \ 'id).write[Int] and
( __ \ 'fk_societe).write[Int] and
.......
它没有按预期工作......如何实现此写入以包含 id 字段?我需要自定义应用/取消应用方法吗?我强调我的案例类是这样实现的,以便与 squeryl KeyedEntity ( id in the body ...) 一起使用