Всички DB извиквания ще се върнат при вас незабавно с Futures
, дори ако не са приключили с операциите си. Това е асинхронно, а не синхронно.
Можете да промените кода си, за да се съобразите с Futures
по един от двата начина:
-
можете да използвате
Await.result
с всички DB извиквания, за да изчакате в този момент, докато завършат, например:Await.result(db.run(insertEffect), Duration.Inf)
-
можете да използвате
.map
(или.flatMap
ако използвате другFuture
отвътре), с код, който искате да изпълните, когато операцията на DB приключи. Например:db.run(insertEffect).map(_ => ... do stuff... )
Разгледайте друг Stack Overflow нишка по отношение на изключението с някои идеи за причината.