Pergunta

Suponha que eu tenha:

case class SomeModel(
  id : Pk[Long],
  description : String
)

object SomeModel extends Magic[SomeModel] {
  def ayDogAy = {
    var aydog = SomeModel(NotAssigned, "aydog")
    this.insert(aydog)
  }
}

Como posso obter novamente inserido identificação de aydog?

Se isso importa, meu backup do banco de dados é Postgres

Foi útil?

Solução

No Play 2 se você tiver um autoincrement longo PK:

val id: Long = SQL("insert into bla bla bla").on("bleh", "blah").executeInsert().get

Outras dicas

Eu não uso a Magia característica (como ele é removido no Play 2.0), então eu não tenho certeza se isso funciona aqui também.Em SQL você pode usar SCOPE_IDENTITY() para obter o último id a ser utilizado na conexão.Assim, você pode fazer somehing como

    val id = SQL("SELECT SCOPE_IDENTITY()")().collect {
               case Row(id: Int) => id
             }.head
    new SomeModel(new Id(id), "aydog")

Eu estou apenas brincando com o Jogo agora.Então, isso não é nada, eu recomendo usar em produção, sem mais investigações.Eu estou especialmente certeza de que pode haver problemas de simultaneidade, quando vários threads usar o ayDogAy método.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top