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.resultse 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.flatMappokud používáte jinýFuturezevnitř), 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.