Slick 3.0 将 Rep(Bind) 转换为值
Slick 3.0 convert Rep(Bind) to value
我正在尝试使用 Slicks 3.0 monadic 连接来连接两个表,如下所示:
def getInfo(id: Int) = {
val innerJoin = for {
a <- tableA
b <- tableB if a.id === b.s_id
} yield b.name
println(innerJoin) // results in Rep(Bind)
innerJoin.map(println(_)) // results in Rep(Ref @1535257794)
}
现在我想从连接结果中获取值。我尝试了很多来获取这些值,但它似乎比我想象的要难。当我尝试打印值时,我总是得到某种 Rep(Bind) 返回(见上面的评论)。
还有这个 解决了同样的问题。我尝试了如下所示的建议解决方案:
innerJoin.map(c => c).forEach(id =>
println(id)
)
甚至无法编译,因为 forEach 没有在那个地方定义。我真的不知道如何在这里进行下一步尝试什么。有人可以帮我吗?
谢谢...
val innerJoin
在您的代码中是一个灵活的查询,可以扩展/修改或变成 DBIOAction
。一个动作是可以在数据库上执行的东西,它最终会 return 你的结果:
val action = innerJoin.result
val results: Future[Seq[String]] = db.run(action)
// finally use map to access your result
results.map(s => s.map(name => ...) // s is of type Seq[String]
我假设你的理解力返回 String
。因此 val results
的类型是 Future[Seq[String]]
.
也看看http://slick.typesafe.com/doc/3.0.0/dbio.html#executing-database-i-o-actions
我正在尝试使用 Slicks 3.0 monadic 连接来连接两个表,如下所示:
def getInfo(id: Int) = {
val innerJoin = for {
a <- tableA
b <- tableB if a.id === b.s_id
} yield b.name
println(innerJoin) // results in Rep(Bind)
innerJoin.map(println(_)) // results in Rep(Ref @1535257794)
}
现在我想从连接结果中获取值。我尝试了很多来获取这些值,但它似乎比我想象的要难。当我尝试打印值时,我总是得到某种 Rep(Bind) 返回(见上面的评论)。
还有这个
innerJoin.map(c => c).forEach(id =>
println(id)
)
甚至无法编译,因为 forEach 没有在那个地方定义。我真的不知道如何在这里进行下一步尝试什么。有人可以帮我吗?
谢谢...
val innerJoin
在您的代码中是一个灵活的查询,可以扩展/修改或变成 DBIOAction
。一个动作是可以在数据库上执行的东西,它最终会 return 你的结果:
val action = innerJoin.result
val results: Future[Seq[String]] = db.run(action)
// finally use map to access your result
results.map(s => s.map(name => ...) // s is of type Seq[String]
我假设你的理解力返回 String
。因此 val results
的类型是 Future[Seq[String]]
.
也看看http://slick.typesafe.com/doc/3.0.0/dbio.html#executing-database-i-o-actions