gpt4 book ai didi

java - 我如何使用 slick 3.0 一次返回一行?

转载 作者:行者123 更新时间:2023-12-02 04:33:13 25 4
gpt4 key购买 nike

如何构建一个 scala 查询来一次返回表中的一行?

如果我的表格有助于回答这个问题,它们位于以下位置: Slick 3.0 (scala) queries don't return data till they are run multiple times (I think)

 val q5 = for {
c <- dat.patientsss
} yield (c.PID, c.Gender, c.Age, c.Ethnicity)

Await.result((db.stream(q5.result).foreach(println)),Duration.Inf)

但我不需要打印,而是需要返回每个。

最佳答案

回答

改用具体化结果:

val result = Await.result((db.run(q5.result)), Duration.Inf)

result 是一个包含所有患者数据的 Seq。使用 foreach 迭代结果集:

result.foreach(r => yourFancyAlgorithm(r))  // r is a single patients data row
<小时/>

旁注

Await 会阻止当前线程,从而使 slick 的最佳功能之一过时。阻塞线程是你不应该做的事情。我强烈建议阅读 Future and Promise在 scala 中。
上面的例子可以简单写为:

val result = db.run(q5.result))
在这种情况下,

结果的类型将为Future[Seq[(yourPatientsData)]]。要访问数据,请在结果上使用 map:

result.map(d => whatever)  // d is of type Seq[(yourPatientsData)]

在等待结果时,应用程序的其余部分将继续进行计算和其他操作。最后,当结果准备就绪时,回调 (d =>whatever) 将运行。

关于java - 我如何使用 slick 3.0 一次返回一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com