使用在Slick 3.0.0-RC3中更新行

时间:2015-04-09 10:55:44

标签: scala slick

这是我使用Slick 2.1,

更新一行表的方法
private def updateEntity(id: Long, row: TTable#TableElementType) = {
        db.withSession { implicit session =>
          val result = query.filter(_.id === id).update(row)             
          result.toLong
        }
      }

升级到Reactive Slick后,db.withSession显示弃用警告,因为不推荐使用withSession。是什么 基于动作的api语法,用于更新行。

1 个答案:

答案 0 :(得分:3)

Slick 3.0使用纯功能,单一I / O而没有副作用。在基于行动的API中,您必须使用db.runQuery并返回Future

所以在你的情况下,它将是

private def updateEntity(id: Long, row: TTable#TableElementType): Future[Long] = {
    db.run(query.filter(_.id === id).update(row)).map(_.toLong)
    }
  }