Scala/Slick - JSON 案例 class 的编写者用于映射光滑的表格
Scala/Slick - JSON writers for case class used to map slick tables
我有一个案例 class,我用它来扩展 Table class。
case class Foo (
..
)
class FooTable(tag: Tag) extends Table[Foo](tag, "foo") {
..
override def * = (...) <> (Foo.tupled, Foo.unapply)
}
全部作品找到。现在我也想为这种情况 class 定义一个 JSON 编写器。
object Foo {
implicit val fooWrites: Writes[Foo] = (
...
)(unlift(Foo.unapply))
}
以上代码将导致与 table 定义中的星投影冲突的错误——类似于 "value tupled is not a member of object models.Foo"。所以我最终创建了一个新案例 class FooDuplicate 并最终复制了 Foo 的所有成员并将其用于 JSON encoding/decoding。据我了解, case class.
没有继承
有没有办法避免在上述场景中重复案例 class 的成员?我相信将一个案例 class 包含在另一个案例中也无济于事,因为出于同样的原因,我无法为包含的案例 class 定义一个 JSON 编写器。
如果我对问题的理解正确的话,我也遇到过类似的问题。我修复了:
def * = (...) <>((Foo.apply _).tupled, Foo.unapply)
它不是很漂亮,但是很管用。当时我用谷歌搜索来理解这个问题,但我不记得理由了。但是跟伴生对象和它自动创建的东西有关系。
我有一个案例 class,我用它来扩展 Table class。
case class Foo (
..
)
class FooTable(tag: Tag) extends Table[Foo](tag, "foo") {
..
override def * = (...) <> (Foo.tupled, Foo.unapply)
}
全部作品找到。现在我也想为这种情况 class 定义一个 JSON 编写器。
object Foo {
implicit val fooWrites: Writes[Foo] = (
...
)(unlift(Foo.unapply))
}
以上代码将导致与 table 定义中的星投影冲突的错误——类似于 "value tupled is not a member of object models.Foo"。所以我最终创建了一个新案例 class FooDuplicate 并最终复制了 Foo 的所有成员并将其用于 JSON encoding/decoding。据我了解, case class.
没有继承有没有办法避免在上述场景中重复案例 class 的成员?我相信将一个案例 class 包含在另一个案例中也无济于事,因为出于同样的原因,我无法为包含的案例 class 定义一个 JSON 编写器。
如果我对问题的理解正确的话,我也遇到过类似的问题。我修复了:
def * = (...) <>((Foo.apply _).tupled, Foo.unapply)
它不是很漂亮,但是很管用。当时我用谷歌搜索来理解这个问题,但我不记得理由了。但是跟伴生对象和它自动创建的东西有关系。