В следующем коде я могу вставить свои записи просто отлично. Но я бы очень хотел вернуть идентификатор вставленного значения, чтобы затем вернуть объект как часть моего ответа.
def postEntry = DBAction { request =>
request.body.asJson.map {json =>
json.validate[(String, Long, String)].map {
case (name, age, lang) => {
implicit val session = request.dbSession
val something = Entries += Entry(None, name, age, lang)
Ok("Hello!!!: " + something)
}
}.recoverTotal {
e => BadRequest("Detected error: " + JsError.toFlatJson(e))
}
}.getOrElse {
BadRequest("Expecting Json data")
}
}
Поэтому я попытался изменить вставку на:
val something = (Entries returning Entries.map(_.id)) += Entry(None, name, age, lang)
Но я получаю следующее исключение:
SlickException: This DBMS allows only a single AutoInc column to be returned from an INSERT
Здесь есть примечание об этом: http://slick.typesafe.com/doc/2.1.0/queries.html
«Обратите внимание, что многие системы баз данных позволяют возвращать только один столбец, который должен быть автоматически увеличивающимся первичным ключом таблицы. Если вы запрашиваете другие столбцы, во время выполнения выдается исключение SlickException (если только база данных на самом деле не поддерживает его)».
Но не сказано, как просто запросить столбец идентификатора.
Entries
нет первичного ключа? Я не думаю, что ваш столбецid
тот самый, вы передаетеNone
вEntry
, что заставляет меня думать, что это необязательно. - person Ende Neu   schedule 30.08.2014