捕获唯一键异常 Scala Slick

Catch Unique Key Exception Scala Slick

下面是我在插入数据库时​​使用的代码,但是当输入唯一组的名称时,我在日志中发现了唯一密钥违规

override def create(groups: GroupEntity): Future[GroupEntity] = db.run{groupsTableQuery returning groupsTableQuery += groups}

使用 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)
}

感谢您的更新,但我找到了解决问题的更简单方法,并且在我的路线中已解决。下面是解决方案

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}"))}

结果 => 发生错误:错误:重复键值违反唯一约束 "groups_name_key_name " 详细信息:Key (groups_name)=(Test Shop) 已经存在。