[英]Play Scala Slick transactions
我想在Play
Slick
Scala
使用transactions
我有三種不同的方法返回布爾值
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]
操作,只要它們返回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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.