下面是我在插入数据库时使用的代码,但是当输入一个唯一的组名时,我在日志中得到一个唯一的密钥违规
override def create(groups: GroupEntity): Future[GroupEntity] = db.run{groupsTableQuery returning groupsTableQuery += groups}
答案 0 :(得分:2)
使用recoverWith
进行恢复。由于所有异常都是PSQLException类型,因此请检查异常消息中是否存在某些关键字来处理它。
val future = db.run { groupsTableQuery returning groupsTableQuery += groups }
future.recoverWith {
case ex: PSQLException =>
val msg = ex.getMessage
//check message for keywords for specific errors
Future.successful(0)
case ex => Future.failed(ex)
}
答案 1 :(得分:1)
感谢您的更新,但我找到了一种更简单的方法来解决问题,这在我的路线中得到了解决。以下是解决方案
val saved : Future[GroupEntity] = groupRepositoryImpl.create(group)
onComplete(saved){
case Success(value) => complete(saved.map(_.toJson))
case Failure(ex) => complete((InternalServerError, s"An error occurred: ${ex.getMessage}"))}
result =>发生错误:错误:重复键值违反唯一约束" groups_name_key_name" 细节:Key(groups_name)=(Test Shop)已经存在。