玩 Scala Slick 交易

Play Scala Slick transactions

我想在PlaySlickScala

中使用transactions

我有三种不同的方法,returns 布尔值

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 也没有显示任何内容。

感谢任何帮助或引导。

看看这个答案:

它已经被多次覆盖 - 只要它们 return DBIO[T](其中 T 是您的结果类型),您只能在事务中组合操作。在您的情况下,您的方法应该 return:

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