关于Slick 3.0.0,为什么插入存在PK不会抛出任何错误?



嗨,我很困惑在光滑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)完成。

相关内容

最新更新