2017-02-15 19 views
0

Ниже приведен код, который я использую в вставки в БД, однако, когда название группы, которая является уникальной вводится я получаю нарушение уникального ключа в журналахПоймать уникальный ключ Exception Scala Slick

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

ответ

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

результата => Ошибка: ОШИБКА: продублировать значение ключа нарушает ограничение уникальности "groups_name_key_name" Детали: Ключ (groups_name) = (Test Shop) уже существует.

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