shy*_*yam 8 mysql scala playframework slick
我正在尝试插入MySQL表并返回具有自动增量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)
}
Run Code Online (Sandbox Code Playgroud)
但是我的代码编译失败,出现以下错误:
type mismatch;
found : slick.profile.FixedSqlAction[Long,slick.dbio.NoStream,slick.dbio.Effect.Write]
required: Long
Run Code Online (Sandbox Code Playgroud)
也试过了
def save(log: GCMLog): Try[GCMLog] = Try {
(Log returning Log.map(_.id)
into ((log, newId) => log.copy(id = newId))
) += log
}
Run Code Online (Sandbox Code Playgroud)
但仍然失败了
type mismatch;
found : slick.profile.FixedSqlAction[models.GCMLog,slick.dbio.NoStream,slick.dbio.Effect.Write]
required: models.GCMLog
Run Code Online (Sandbox Code Playgroud)
[我在这里提到了SO问题如何捕获重复键值违规的光滑postgres异常和Slick文档http://slick.typesafe.com/doc/3.1.1/queries.html ]
非常感谢,如果有人能告诉我发生了什么以及如何解决这个问题.
谢谢!
def save(log: GCMLog): Try[GCMLog] = Try {
(Log returning Log.map(_.id))
into ((log, newId) => log.copy(id = newId))
) += log
}
Run Code Online (Sandbox Code Playgroud)
更新:
看起来db.run需要执行才能将其转换Action为结果。