Všechna volání DB se vám vrátí okamžitě s Futures
, i když ještě neskončili se svými operacemi. Toto je asynchronní, nikoli synchronní.
Svůj kód můžete změnit tak, aby vyhovoval Futures
jedním ze dvou způsobů:
-
můžete použít
Await.result
se všemi voláními DB, abyste v tomto okamžiku počkali, dokud nebudou dokončena, například:Await.result(db.run(insertEffect), Duration.Inf)
-
můžete použít
.map
(nebo.flatMap
pokud používáte jinýFuture
zevnitř), s kódem, který chcete spustit po dokončení operace DB. Například:db.run(insertEffect).map(_ => ... do stuff... )
Podívejte se na další Stack Overflow vlákno pokud jde o výjimku s několika nápady ohledně příčiny.