我想在transactions
Play
Slick
中使用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))
(
transactionally
在DBIO
上调用,而不是在Future
上调用)还请看下面的幻灯片:http://slides.com/pdolega/slick-101#/85