Uso de DOY Framework Anorm, ¿cómo obtengo el ID generado automáticamente para un inserto?
-
10-12-2019 - |
Pregunta
Supongamos que tengo:
case class SomeModel(
id : Pk[Long],
description : String
)
object SomeModel extends Magic[SomeModel] {
def ayDogAy = {
var aydog = SomeModel(NotAssigned, "aydog")
this.insert(aydog)
}
}
¿Cómo recupero el ID insertado de Aydog?
Si importa, mi base de datos de respaldo es Postgres
Solución
en el juego 2 Si tiene un AutoIncrement Long PK:
val id: Long = SQL("insert into bla bla bla").on("bleh", "blah").executeInsert().get
Otros consejos
No uso el rasgo mágico (ya que se elimina en el juego 2.0), así que no estoy seguro de si esto también funciona.En SQL puede usar Scope_Identity () para obtener la última identificación utilizada en la conexión.Para que puedas hacer un millaje como
val id = SQL("SELECT SCOPE_IDENTITY()")().collect {
case Row(id: Int) => id
}.head
new SomeModel(new Id(id), "aydog")
Solo estoy jugando con el juego en este momento.Así que esto no es nada, recomendaría usar en producción sin nuevas investigaciones.Estoy especialmente inseguro si puede haber problemas de concurrencia, cuando varios hilos utilizan el método AyDogay.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow