我有一个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()
}
答案 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。