Slick 2.0 MultiDBCakeExample AutoInc“into”功能

时间:2014-02-22 21:04:41

标签: scala slick

我发现很多关于“旧”AutoInc功能如何工作的旧帖子,但几乎没有关于新AutoInc功能如何实际工作的帖子。

https://github.com/slick/slick-examples/blob/master/src/main/scala/com/typesafe/slick/examples/lifted/MultiDBCakeExample.scala

使用User和Picture定义了两个私有AutoInc函数:

private val picturesAutoInc = pictures 
    returning pictures.map(_.id) into { case (p, id) => p.copy(id = id) }

private val usersAutoInc = users.map(u => (u.name, u.pictureId)) 
    returning users.map(_.id) into {
    case (_, id) => id
}

我在http://slick.typesafe.com/doc/2.0.0/queries.html#inserting

上找到了returning方法

但这个into功能是什么?它有什么作用?它需要做什么?

这是我的班级,我该如何编写自己的autoInc?

  case class Label (id: Option[Int] = None, tag_name: String)

  class Labels (tag: Tag) extends Table[Label](tag, "Labels") {
    def id = column[Option[Int]]("TAG_ID", O.PrimaryKey, O.AutoInc)
    def tag_name = column[String]("TAG_NAME")

    def * = (id, tag_name) <> (Label.tupled, Label.unapply _)
  }

1 个答案:

答案 0 :(得分:3)

它允许您将插入的值和生成的键映射到所需的目标值。

直到现在还没有记录。我创建了一个包含文档的PR:https://github.com/slick/slick/pull/687

另请注意相应的单元测试:https://github.com/slick/slick/blob/master/slick-testkit/src/main/scala/com/typesafe/slick/testkit/tests/InsertTest.scala#L59