【发布时间】:2012-10-18 07:58:28
【问题描述】:
如何获取使用 Slick 插入的记录的自动递增值?以下代码打印 1111。我本来希望它打印 1234
import scala.slick.driver.H2Driver.simple._
object TestMappedTable extends App{
case class User(id: Option[Int], first: String, last: String)
object Users extends Table[User]("users") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def first = column[String]("first")
def last = column[String]("last")
def * = id.? ~ first ~ last <> (User, User.unapply _)
}
implicit val session = Database.forURL("jdbc:h2:mem:test1", driver = "org.h2.Driver").createSession()
session.withTransaction{
Users.ddl.create
print(Users.insert(User(None, "Jack", "Green" )))
print(Users.insert(User(None, "Joe", "Blue" )))
print(Users.insert(User(None, "John", "Purple" )))
print(Users.insert(User(None, "Jim", "Yellow" )))
}
}
我将 Slick 0.11.2 用于 Scala 2.10.0-RC1
【问题讨论】:
-
数据库是否显示1、2、3、4?
-
@DominicBou-Samra 是的,id 是正确自动递增的。
-
愚蠢的问题,但是你确定Insert的返回值是id吗?我在 ScalaDoc 文档中找不到插入。有链接吗?
-
我还以为是这样,但事实证明我错了。感谢您的帮助。
-
数据操作查询通常返回受影响的行数。