Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 玩Scala流畅的交易_Database_Postgresql_Scala_Playframework_Slick - Fatal编程技术网

Database 玩Scala流畅的交易

Database 玩Scala流畅的交易,database,postgresql,scala,playframework,slick,Database,Postgresql,Scala,Playframework,Slick,我想在PlaySlickScala 我有三种不同的方法返回布尔值 def updateFirst() def updateSecond() def updateThird() 我正在尝试运行下面的命令,但似乎在事务上找不到命令 val operations = for { _ <- updateFirst() _ <- updateSecond() _ <- updateThird() } yield () sync(db.run(o

我想在
Play
Slick
Scala

我有三种不同的方法返回布尔值

def updateFirst() 
def updateSecond()
def updateThird()
我正在尝试运行下面的命令,但似乎在事务上找不到
命令

val operations =
  for {
     _ <- updateFirst()
     _ <- updateSecond()
     _ <- updateThird()
  } yield ()

sync(db.run(operations).transactionally))
甚至DBIO也没有显示任何内容


感谢您的任何帮助或指导。

请看以下答案:

它已经被讨论过多次了-您只能在事务中编写操作,只要它们返回
DBIO[T]
(其中
T
是您的结果类型)。在您的情况下,您的方法应该返回:

def updateFirst(): DBIO[Boolean] 
def updateSecond(): DBIO[Boolean]
def updateThird(): DBIO[Boolean]
此外,您的最后一行应该是:

sync(db.run(operations.transactionally))
事务性地
DBIO
上调用,而不是在
Future
上调用)


另请看下面的幻灯片:

看一下这个答案:

它已经被讨论过多次了-您只能在事务中编写操作,只要它们返回
DBIO[T]
(其中
T
是您的结果类型)。在您的情况下,您的方法应该返回:

def updateFirst(): DBIO[Boolean] 
def updateSecond(): DBIO[Boolean]
def updateThird(): DBIO[Boolean]
此外,您的最后一行应该是:

sync(db.run(operations.transactionally))
事务性地
DBIO
上调用,而不是在
Future
上调用)


另请看下面的幻灯片:

如何将方法return转换为DBIO[Boolean]?这是示例同步(db.run(query.update(status))==1。。我也尝试过删除同步和其他内容,只需将
sync(db.run(query.update(status))==1
转换为:
query.update(status).map(==1)
非常感谢。我如何检查事务是否已成功完成?请在
Future的
方法中检查它(如果发生异常,您应该在此处捕获异常)如何将我的方法返回转换为DBIO[Boolean]?这是示例同步(db.run(query.update(status))==1..我已尝试删除同步和其他内容,只需将
sync(db.run(query.update(status))==1转换为以下内容:
query.update(status).map(\u==1)
非常感谢。如何检查事务是否已成功完成?请在
未来的
方法的
恢复
中进行检查(如果发生异常,您应该在此处捕获异常)