Play Framework Anorm을 사용하여 삽입물에 대해 자동 생성 ID를 다시 얻을 수 있습니까?

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

문제

내가 가지고 있다고 가정합니다 :

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 메소드를 사용하면 동시성 문제가있을 수있는 경우 특히 확실하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top