4

我有一个 id 字段的 autoid 表。插入带有异常的行后,我想检索生成的 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方法代替executeUpdate; 它返回一个Option[T]whereT是主键的类型。

您可能想看看How to Retrieve the Primary Key When Saving a New Object in Anorm,它还向您展示了如何在不指定 id 的情况下制定INSERT语句——您想要生成的 id。

于 2013-02-20T01:42:58.050 回答