Scala Slick如何插入具有先前返回的自动增量ID的行

时间:2016-01-02 17:08:07

标签: scala orm slick

这就是事情。

我使用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)
}

这些用于存储一个Foo和几个Bars,其中一个Bar只有一个Foo。 我一直试图计算如何在单个事务上执行完整的插入语句集。即

DBIO.seq( 
 (fooTable returning fooTable.map(_id)) += Foo(None, "MyName", 42),
 (barTable returning batTable.map(_id)) += Bar(None, "MyBarname", FOO_KEY)
)

但问题是我无法找到将Foo ID用作Bar实例字段上的FOO_KEY的方法。 当然我可以执行两次DBAction,但在我看来它非常糟糕。 有什么想法?

提前致谢

0 个答案:

没有答案