Alle DB-oproepen zullen onmiddellijk naar u terugkeren met Futures , zelfs als ze nog niet klaar zijn met hun operaties. Dit is asynchroon, niet synchroon.
U kunt uw code wijzigen om tegemoet te komen aan de Futures op een van de volgende twee manieren:
-
u kunt
Await.result. gebruiken met alle DB-aanroepen, om op dat moment te wachten totdat ze zijn voltooid, bijvoorbeeld:Await.result(db.run(insertEffect), Duration.Inf) -
u kunt
.map. gebruiken (of.flatMapals je een andereFuture. gebruikt van binnenuit), met code die u wilt uitvoeren wanneer de DB-bewerking is voltooid. Bijvoorbeeld:db.run(insertEffect).map(_ => ... do stuff... )
Kijk eens naar een andere Stack Overflow draad met betrekking tot de uitzondering met enkele ideeën over de oorzaak.