【发布时间】:2016-04-30 10:45:06
【问题描述】:
这个问题是关于 slick 3.0 或 3.1(我对此很灵活)
我有一个中间查询,我使用map、for 等进行处理以获得我想要的结果。最后我有一个
val foo: DBIOAction[Seq[MySchema.Bar], NoStream, Effect.Read]
现在我有一个val bar: TableQuery[MySchema.Bar],我想将 foo 插入其中。
如果 foo 是 Seq,我可以简单地使用 bar ++= foo,但事实并非如此。
我发现的唯一方法是通过等待来实现结果。像这样
val query = (bar ++= Await.result(db.run(foo), Duration.Inf))
显然query 需要在某个时候与db.run 一起运行。但现在我有两个数据库运行。一次运行所有内容不是更好吗?
有更好的方法吗?
【问题讨论】:
-
bar += foo?但是无论是+=还是++=...(?),您仍然需要db.run -
我认为 ++= 有副作用的是 slick2 api,而 slick3 功能更强大,所以它需要你明确地做一个
db.run -
是的,++= 的结果现在是一个需要运行的查询。我在这一点上编辑了问题。但我必须为此任务执行两次 db.run 调用。