Todas as chamadas de banco de dados retornarão para você imediatamente com
Futures
, mesmo que não tenham concluído suas operações. Isso é assíncrono e não síncrono. Você pode alterar seu código para acomodar os
Futures
de duas maneiras:-
você pode usarAwait.result
com todas as chamadas de banco de dados, para aguardar nesse ponto até que elas sejam concluídas, por exemplo:Await.result(db.run(insertEffect), Duration.Inf)
-
você pode usar.map
(ou.flatMap
se você estiver usando outroFuture
de dentro), com o código que você deseja executar quando a operação do banco de dados for concluída. Por exemplo:db.run(insertEffect).map(_ => ... do stuff... )
Dê uma olhada em outro Stack Overflow linha sobre a exceção com algumas idéias sobre a causa.