嗨,我很困惑在光滑3,我已经创建了简单的插入。如果我插入新的PK,它工作得很好,但当我尝试插入一个存在的PK时,Slick不会抛出任何错误和未来。isCompleted仍然返回true。我的代码有什么问题?
val db = Database.forConfig("db")
val future = {
try {
val insert = DBIO.seq(
subscribers += subscriber
)
db.run(insert.transactionally)
} finally db.close
}
return if (future.isCompleted) return Some(subscriber) else None
解决:我只需要等待结果。
val db = Database.forConfig("db")
val isCompleted = {
val f = db.run((subscribers += subscriber).transactionally)
try {
Await.result(f, Duration.Inf)
true
} catch {
case _ => false
} finally db.close
}
return if (isCompleted) return Some(subscriber) else None
问题似乎是您的代码没有等到未来的db.run(insert.transactionally)
完成。