在Slick 3.0中获取受影响的行(Int)

时间:2015-05-15 18:26:40

标签: scala slick

在Slick的早期版本中,在TableQuery上定义了一个返回插入结果的插入函数。我正在迁移到新API并执行以下操作:

DBIO.seq(someTable += someValue)

但这有类型

dbio.DBIOAction[Unit, NoStream, Write]

如何取回受影响的行?

修改

这里的问题似乎是这些类型并没有像我期望的那样排成一行。以下是Scala将其视为以下类型的内容:

val q: PostgresDriver.DriverAction[PostgresDriver.InsertActionExtensionMethods[(String, String)]#SingleInsertResult, NoStream, Write] = Admins.tableQuery += ((username, grantor))
val seq: dbio.DBIOAction[Unit, NoStream, Write] = DBIO.seq(q)
db.run(seq)

这对我没有意义。如果q的类型为DriverAction[PostgresDriver.InsertActionExtensionMethods[(String, String)]#SingleInsertResult...,其中SingleInsertResult是Int的类型别名,那么我的DBIO.seq不应该返回DBIOAction[Int, NoStream, Write]吗?

1 个答案:

答案 0 :(得分:1)

查看these examples

它与光滑的2.x没有什么不同,但现在一切都返回Futures。

也许是某些事情(在我的头顶,我现在无法自己测试)

val users = TableQuer[Users]
// this is the query
val q = (users += User(None, "Stefan", "Zeiger"))
// now you run it
db.run(q).map{ affectedRows =>
  case 1 => println("success")
  case _ => println("oops")
}