4

idフィールドにautoidを持つテーブルがあります。anormで行を挿入した後、生成された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()
}
4

3 に答える 3

7

最新バージョンでは、スカラーが必要です。

   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)  
于 2013-02-20T11:33:47.330 に答える
2

executeInsertの代わりに使用executeUpdateし、戻り値はidです。

于 2013-02-20T01:15:56.530 に答える
2

;のexecuteInsert代わりにメソッドを使用してください。これは、主キーのタイプであるwhereをexecuteUpdate返します。Option[T]T

Anormに新しいオブジェクトを保存するときに主キーを取得する方法を確認することをお勧めしますINSERT。これは、生成するIDを指定せずにステートメントを作成する方法も示しています。

于 2013-02-20T01:42:58.050 に答える