我用Slick创建了一个数据库。我试图创建表的模式,选择一些信息等等。下面是创建模式的代码:
val createUserTable = UserTable.table.schema.create
val createTaskTable = TaskTable.table.schema.create
Await.result(db.run(DBIO.seq(Queries.createUserTable, Queries.createTaskTable)), 2 seconds)
这段代码工作得很好,但我不想对每个查询都使用Await.result。我想要的是批量执行它们,至少是有目的的(创建、选择等等)我可以创建此方法来传递不同的操作:
def executeAction[T](action: DBIO[T]) =
Await.result(db.run(action), 2 seconds)
因此,我很好奇如何更改它以传递包含一系列查询的数据结构?例如,
List(createUserTable, createTaskTable)
感谢您的帮助!
最佳答案
避免等待每个DBIO操作的两种方法
创建DBIO操作列表,并使用DBIO.seq
收集它们并执行。
用于理解将所有DBIO操作组合为一个DBIO操作。
这将帮助您使用wait一次又一次地等待中间DBIO操作的结果。
在这两种情况下,您必须等待至少一次使用主线程(即停止主线程退出)的结果。