【问题标题】:Scala/Slick - JSON writers for case class used to map slick tablesScala/Slick - 用于映射光滑表的案例类的 JSON 编写器
【发布时间】:2017-04-22 06:54:11
【问题描述】:

我有一个案例类,我用它来扩展 Table 类。

case class Foo (
  ..
)

class FooTable(tag: Tag) extends Table[Foo](tag, "foo") {
  ..
  override def * = (...) <> (Foo.tupled, Foo.unapply)
}

找到所有作品。现在我也想为这个案例类定义一个 JSON 编写器。

object Foo {
  implicit val fooWrites: Writes[Foo] = (
    ...
  )(unlift(Foo.unapply))
}

以上代码将导致与表定义中的星形投影冲突的错误——例如“值元组不是对象模型的成员。Foo”。所以我最终创建了一个新的案例类 FooDuplicate 并最终复制了 Foo 的所有成员并将其用于 JSON 编码/解码。据我了解,案例类没有继承。

有没有办法避免在上述场景中重复案例类的成员?我相信在另一个案例类中包含一个案例类也无济于事,因为出于同样的原因,我无法为包含的案例类定义 JSON 编写器。

【问题讨论】:

    标签: scala playframework slick


    【解决方案1】:

    如果我正确理解了这个问题,我也遇到了类似的问题。我修复了:

    def * = (...) <>((Foo.apply _).tupled, Foo.unapply)
    

    它不漂亮,但它有效。当时我用谷歌搜索了解问题,但我不记得理由。但与伴生对象及其自动创建的东西有关。

    【讨论】:

    • 正是我需要的......非常感谢
    猜你喜欢
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2010-11-16
    • 1970-01-01
    相关资源
    最近更新 更多