sql - Cómo recuperar la clave principal al guardar un nuevo objeto en Anorm
scala playframework (1)
Estoy usando Scala Play! Marco con Anorm para persistir el modelo de datos a la base de datos. Seguí el código de ejemplo 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()
}
}
}
Tratando de expandirlo, quiero recuperar la clave principal que se acaba de crear y almacenarla en la clase de caso.
¿Cómo puedo recuperar la clave principal?
Utilice el método executeInsert
lugar de executeUpdate
. Anotado here , el método anterior devuelve la Option[T]
donde T
es el tipo de la clave primaria.
Puede extraer el valor con una declaración de match
:
DB.withConnection { implicit connection =>
SQL(...).executeInsert()
} match {
case Some(long) => long // The Primary Key
case None => ...
}