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.resultcom 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.flatMapse você estiver usando outroFuturede 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.