我了解在使用诸如Long, Int, String
etc 之类的类型时这是如何完成的。但是假设我有一个类在另一个类中有字段,如下所示:
case class Foo(a:String, b:String)
case class Bar(foo:Option[Foo], c:String)
Foo
我将如何为我的自定义类型(在我的类中)设置映射器Bar
?
class Bars(tag:Tag) extends Table[Bar](tag, "BARS") {
def foo = column[Foo]("FOO") // <- won't work
def c = column[String]("C")
def * = (foo, c) <> (Bar.tupled, Bar.unapply)
}
(文档链接)
更新:
数据库驱动程序:slick.driver.PostgresDriver
光滑 2
我猜原始 SQL 应该是这样的:
"BARS" (
"A" VARCHAR(254) NOT NULL,
"B" VARCHAR(254) NOT NULL,
"C" VARCHAR(254) NOT NULL
);
应该可以这样调用Bar
:
val bar = Bar(Foo("1", "2"), "3")
barTable.insert(bar)
bar.foo.a // 1
bar.foo.b // 2
bar.c // 3