В настоящее время я играю с Play 2.0 (Scala ). Я должен признать, что это очень весело. У меня есть вопрос, связанный с исключениями операций с базой данных .
Допустим, у меня есть Car в качестве доменного класса и у меня есть ограничение целостности для одного из полей,скажем модель , чтобы в БД у меня не могло быть двух (2 )строк с одинаковым названием модели:
case class Car(id: Pk[Long], name: String, model: String)
Я пытаюсь вставить запись в БД вот так:
def create(car: Car): Option[Long] = {
DB.withConnection { implicit connection =>
try {
SQL("insert into cars (name, model) values ({name},{model}").on("name" -> car.name, "model" -> car.model).executeInsert()
} catch {
case e: Exception => {
Logger.debug(e.getMessage())
None
}
}
}
если я не поймаю исключение, как в предыдущем коде, то, когда я вызову этот метод из моего контроллера с моделью, имеющей значение, уже существующее в базе данных, у меня возникнет следующее исключение:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'Enzo' for key 'model'
Есть ли способ поймать MySQLIntegrityConstraintViolationException вместо Exception , чтобы у меня был точный -детальный контроль над тем, что может пойти не так, а затем предоставить более краткую обратную связь -моему пользователю например (в браузере или на мобильном устройстве )?
Является ли это лучшим способом обработки операций и исключений, связанных с БД -, или существуют какие-либо передовые методы -, которые все используют?
заранее спасибо,