sql scala playframework playframework-2.0 anorm

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 => ... }