Scala anorm检索插入的id

时间:2013-02-20 00:38:57

标签: mysql scala playframework-2.0 anorm typesafe-stack

我有一个idid字段的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()
}

3 个答案:

答案 0 :(得分: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)  

答案 1 :(得分:2)

使用executeInsert代替executeUpdate,返回值为id。

答案 2 :(得分:2)

使用executeInsert方法代替executeUpdate;它返回Option[T],其中T是主键的类型。

您可能需要查看How to Retrieve the Primary Key When Saving a New Object in Anorm,它还会向您展示如何制定INSERT语句而不指定您想要生成的ID。