1
我使用的是Slick 3.1.0,基本上我有兩個模型,另一個有FK約束。比方說:
case class FooRecord(id: Option[Int], name: String, oneValue: Int)
class FooTable(tag: Tag) extends Table[FooRecord](tag, "FOO"){
def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
def name = column[String]("NAME")
def oneValue = column[Int]("ONEVALUE")
}
val fooTable = TableQuery[FooTable]
和
case class BarRecord(id: Option[Int], name: String, foo_id: Int)
class BarTable(tag: Tag) extends Table[BarRecord](tag, "BAR"){
def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
def name = column[String]("NAME")
def fooId = column[Int]("FOO_ID")
def foo = foreignKey("foo_fk", fooId, fooTable)(_.id)
}
它們用來存儲一個富,和幾個酒吧,其中一欄只有一個富。 我一直在想如何在單個事務上執行完整的插入語句集。即。
DBIO.seq(
(fooTable returning fooTable.map(_id)) += Foo(None, "MyName", 42),
(barTable returning batTable.map(_id)) += Bar(None, "MyBarname", FOO_KEY)
)
但事情是我無法找到方式來獲取Foo ID作爲欄實例字段上的FOO_KEY。 當然,我可以執行DBAction兩次,但在我看來這是非常糟糕的。 有什麼想法?
在此先感謝
最後我用了一個非常相似的方法,但並不知道事務性。真棒。工作順利! –