我想在transactionsPlaySlick中使用Scala
我有三种不同的方法返回布尔值

def updateFirst()
def updateSecond()
def updateThird()

我试图运行下面的命令,但似乎找不到transactionally命令
val operations =
  for {
     _ <- updateFirst()
     _ <- updateSecond()
     _ <- updateThird()
  } yield ()

sync(db.run(operations).transactionally))

与slick相关的我的代码库sbt版本如下:
"com.typesafe.play" %% "play-slick" % "2.0.0",
"com.typesafe.play" %% "play-slick-evolutions" % "2.0.0",
"com.typesafe.slick" %% "slick" % "3.0.1",

即使是dbio也没有显示任何内容。
感谢任何帮助或领导。

最佳答案

看看这个答案:https://stackoverflow.com/a/41624229/2239369
它已经被多次覆盖了-您只能在事务中组合操作,只要它们返回DBIO[T](其中T是您的结果类型)。在您的情况下,您的方法应该返回:

def updateFirst(): DBIO[Boolean]
def updateSecond(): DBIO[Boolean]
def updateThird(): DBIO[Boolean]

最后一行应该是:
sync(db.run(operations.transactionally))

transactionallyDBIO上调用,而不是在Future上调用)
还请看下面的幻灯片:http://slides.com/pdolega/slick-101#/85

10-07 12:08