Отвечать
Вместо этого используйте материализованный результат:
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
и Promise
в scala.
Приведенный выше пример можно просто записать так:
val result = db.run(q5.result))
result
в этом случае будет иметь тип Future[Seq[(yourPatientsData)]]
. Чтобы получить доступ к данным, используйте map
в результате:
result.map(d => whatever) // d is of type Seq[(yourPatientsData)]
В ожидании результата остальная часть вашего приложения продолжит свои вычисления и прочее. Наконец, когда результат будет готов, запустится обратный вызов (d => whatever
).
person
Roman
schedule
01.07.2015
(c.PID, c.Gender, c.Age, c.Ethnicity)
за раз - person S2C   schedule 02.07.2015