Utilisation de la Frame-Framework, comment récupérer l'identifiant généré automatiquement pour un insert?
-
10-12-2019 - |
Question
Supposons que j'ai:
case class SomeModel(
id : Pk[Long],
description : String
)
object SomeModel extends Magic[SomeModel] {
def ayDogAy = {
var aydog = SomeModel(NotAssigned, "aydog")
this.insert(aydog)
}
}
Comment puis-je récupérer l'identifiant inséré de Aydog?
Si cela compte, ma base de données de support est postgres
La solution
en jeu 2 Si vous avez un autocrampe long pk:
val id: Long = SQL("insert into bla bla bla").on("bleh", "blah").executeInsert().get
Autres conseils
Je n'utilise pas le trait magique (comme il est supprimé dans la lecture 2.0), donc je ne sais pas si cela fonctionne ici aussi.Dans SQL, vous pouvez utiliser Scope_Identity () pour obtenir le dernier identifiant utilisé sur la connexion.Afin que vous puissiez faire des singes comme
val id = SQL("SELECT SCOPE_IDENTITY()")().collect {
case Row(id: Int) => id
}.head
new SomeModel(new Id(id), "aydog")
Je joue juste avec le jeu en ce moment.Ce n'est donc rien que je recommanderais d'utiliser en production sans autre enquête.Je ne sais pas particulièrement s'il y a eu des problèmes de concurrence, lorsque plusieurs threads utilisent la méthode Aydogay.