簡體   English   中英

玩Scala Slick交易

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM