Utilisation de la Frame-Framework, comment récupérer l'identifiant généré automatiquement pour un insert?

StackOverflow https://stackoverflow.com//questions/9641553

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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top