Я пытаюсь сделать вставку в таблицу MySQL и вернуть строку с идентификатором auto increment. Мой код ниже:Slick: возвращает вставленную строку с auto increment id
private val Log = TableQuery[GCMLogTable]
def save(log: GCMLog): Try[GCMLog] = Try {
val newId = (Log returning Log.map(_.id)) += log
log.copy(id = newId)
}
Но моя компиляция не выполняется для моего кода с ниже ошибки:
type mismatch;
found : slick.profile.FixedSqlAction[Long,slick.dbio.NoStream,slick.dbio.Effect.Write]
required: Long
Также попытался
def save(log: GCMLog): Try[GCMLog] = Try {
(Log returning Log.map(_.id)
into ((log, newId) => log.copy(id = newId))
) += log
}
Но до сих пор не удается с
type mismatch;
found : slick.profile.FixedSqlAction[models.GCMLog,slick.dbio.NoStream,slick.dbio.Effect.Write]
required: models.GCMLog
[Я ответил на вопрос How to catch slick postgres exceptions for duplicate key value violations и документация Slick здесь http://slick.typesafe.com/doc/3.1.1/queries.html]
Очень ценится, если кто-то может сказать мне, что происходит, и как это можно исправить.
Спасибо!
Я думаю, ваша проблема (несоответствие типов), потому что вы на самом деле не работает запрос '' 'db.run (.. .) '' '. –
@MirkoStocker db.run работает (с другим синтаксисом), но есть ли способ вернуть вставленную строку, если я использую db.run? – shyam
Так что же ваш код в настоящее время возвращает, когда вы делаете db.run? –