[英]Using Play Framework Anorm, how do I get the auto-generated id back for an insert?
假設我有:
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
在播放2中,如果您具有自動遞增的長PK:
val id: Long = SQL("insert into bla bla bla").on("bleh", "blah").executeInsert().get
我不使用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方法時,我尤其不確定是否可能存在並發問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.