scala slick slick-3.0

scala - Slick 3.0 Insertar y luego obtener Auto Incrementar valor



slick-3.0 (1)

Aquí está la página de documentación relevante , según la cual, debe construir una consulta como esta:

val insertQuery = items returning items.map(_.id) into ((item, id) => item.copy(id = id)) def create(name: String, price: Double) : Future[Item] = { val action = insertQuery += Item(0, name, price) db.run(action) }

He escrito este código que funciona perfectamente.

class Items(tag: Tag) extends Table[Item](tag, "ITEMS") { def id = column[Long]("ITEMS_ID", O.PrimaryKey, O.AutoInc) def name = column[String]("ITEMS_NAME") def price = column[Double]("ITEMS_PRICE") def * = (id, name, price) <> ((Item.apply _).tupled, Item.unapply _) } object Shop extends Shop{ val items = TableQuery[Items] val db = Database.forConfig("h2mem1") def create(name: String, price: Double) : Int = { val action = items ++= Seq(Item(0, name, price)) val future1 = db.run(action) val future2 = future1 map {result => result map {x => x} } Await.result(future2, Duration.Inf).getOrElse(0) } }

Este código funciona pero el valor de retorno es el número de registros insertados. Pero quiero devolver el valor de AutoInc después de que se haya realizado la inserción.

hice google y encontré pocos artículos

Slick 3.0.0 AutoIncrement Composite Key

Devolviendo el valor de incremento automático después de una inserción usando slick

Pero de alguna manera estos no responden a la pregunta limpiamente.