2013-02-20 6 views
4

id 필드에 자동 실행이 가능한 테이블이 있습니다. 웜이있는 행을 삽입 한 후 생성 된 ID를 검색하고 싶습니다. 어떤 생각?스칼라 앤orm이 삽입 된 ID를 가져옵니다

SQL(
    """ 
     insert into accom (id,places,lat,lon,permaname,country,defaultLanguage) values (
     {places}, {lat}, {lon}, {permaname}, {country}, {defaultLanguage} 
    ) 
    """).on(
     'id -> id, 
     'places -> places, 
     'lat -> lat, 
     'lon -> lon, 
     'permaname -> permaname, 
     'country -> country, 
     'defaultLanguage -> defaultLanguage).executeUpdate() 
} 

답변

7

당신은 스칼라 필요하십니까?
+0

정답입니다. 스칼라 매개 변수를 사용하지 않고 이상한 열 유형 불일치 오류가 발생했습니다. – caprica

2

사용 executeInsert 대신 executeUpdate 및 반환 값은 ID입니다.

+2

: 최신 버전의 –

2

executeUpdate 대신 executeInsert 메서드를 사용하십시오. Option[T]을 리턴합니다. 여기서, T이 1 차 키의 유형입니다.

How to Retrieve the Primary Key When Saving a New Object in Anorm을보고 싶은데, 생성하려고하는 id를 지정하지 않고 INSERT 문을 공식화하는 방법을 보여줍니다. 그들은 정말, 잘 문서화해야

val newId = SQL(
     """ 
     insert into accom (places,lat,lon,permaname,country,defaultLanguage) 
     values ({places}, {lat}, {lon}, {permaname}, {country}, {defaultLanguage}) 
     """).on(
     'places -> places, 
     'lat -> lat, 
     'lon -> lon, 
     'permaname -> permaname, 
     'country -> country, 
     'defaultLanguage -> defaultLanguage).executeInsert(scalar[Long].single)