Play Framework Anorm을 사용하여 삽입물에 대해 자동 생성 ID를 다시 얻을 수 있습니까?
-
10-12-2019 - |
문제
내가 가지고 있다고 가정합니다 :
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가 자동 설정 장비가있는 경우 :
val id: Long = SQL("insert into bla bla bla").on("bleh", "blah").executeInsert().get
. 다른 팁
나는 마법의 특성을 사용하지 않는다 (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")
.
지금 당장 놀아 라.그래서 이것은 더 이상의 조사없이 생산에서 사용하는 것이 좋습니다.여러 개의 스레드가 Aydogay 메소드를 사용하면 동시성 문제가있을 수있는 경우 특히 확실하지 않습니다.
제휴하지 않습니다 StackOverflow