假设我有:
case class SomeModel(
id : Pk[Long],
description : String
)
object SomeModel extends Magic[SomeModel] {
def ayDogAy = {
var aydog = SomeModel(NotAssigned, "aydog")
this.insert(aydog)
}
}
如何取回aydog的插入ID?
如果重要,我的后备数据库是Postgres
答案 0 :(得分:4)
如果您有自动增量长PK,则在Play 2中
val id: Long = SQL("insert into bla bla bla").on("bleh", "blah").executeInsert().get
答案 1 :(得分:1)
我没有使用Magic特性(因为它在Play 2.0中删除了),所以我不确定这是否也适用于此。在SQL中,您可以使用SCOPE_IDENTITY()来获取连接上使用的最后一个ID。所以你可以做像
这样的事情 val id = SQL("SELECT SCOPE_IDENTITY()")().collect {
case Row(id: Int) => id
}.head
new SomeModel(new Id(id), "aydog")
我现在正在玩Play。所以这不是我建议在没有进一步调查的情况下在生产中使用的。当多个线程使用ayDogAy方法时,我特别不确定是否存在并发问题。