我正在使用Scala Play!使用Anorm将数据模型持久化到数据库的框架。我按照示例代码here:
case class Bar(id: Pk[Long], name: String)
object Bar {
val simple = {
get[Pk[Long]]("id") ~
get[String]("name") map {
case id~name => Bar(id, name)
}
}
def findAll(): Seq[Bar] = {
DB.withConnection { implicit connection =>
SQL("select * from bar").as(Bar.simple *)
}
}
def create(bar: Bar): Unit = {
DB.withConnection { implicit connection =>
SQL("insert into bar(name) values ({name})").on(
'name -> bar.name
).executeUpdate()
}
}
}
尝试对其进行扩展,我想检索刚刚创建的主键并将其存储在案例类中。
如何检索主键?
答案 0 :(得分:35)
使用executeInsert
方法代替executeUpdate
。注意到here,foremer方法返回Option[T]
,其中T
是主键的类型。
您可以使用match
语句提取值:
DB.withConnection { implicit connection =>
SQL(...).executeInsert()
} match {
case Some(long) => long // The Primary Key
case None => ...
}