2016-02-22 4 views
-3

Может ли кто-нибудь сказать мне, что лучше всего подходит для вставки записей с помощью slick 3.x?Лучшая практика для вставки записей с помощью slick 3.x

Я хочу простой образец вставки записи, и ответом должна быть модель с обновлением значения первичного ключа.

case class User(int: Int, name: String, email: String) 

Я хочу сделать следующее:

  1. Вставьте новую запись
  2. Возврата модели (Пользователь) со значением PK обновлений для свойства идентификатора
  3. Бросьте, если исключение вставка не удалась, и я верю, что когда вставка возвращает меньше 0?

Я использую postgresql, если это имеет значение.

Документов есть это:

val userWithId = 
    (users returning users.map(_.id) 
     into ((user,id) => user.copy(id=Some(id))) 
) += User(None, "Stefan", "Zeiger") 

Есть функция помощника, который я мог бы использовать в моей DB слое, который также возвращает исключение, если вставка не удалась? Если это удастся, верните пользователя с Идентификатором, иначе создайте исключение.

+4

Вы пробовали чтение [документацию] (http://slick.typesafe.com /doc/3.1.1/queries.html#inserting) уже? – hasumedic

+0

Да, но у них нет конкретного примера вставки, с обновлением базы данных и выбросом исключения. Для этого должна быть лучшая практика, а не каждый, кто пишет свои собственные. –

+0

Этому ответили, отвечая на следующий вопрос: http://stackoverflow.com/questions/27080868/how-to-catch-slick-postgres-exceptions-for-duplicate-key-value-violations –

ответ

2

Как упоминалось в @Laurece Bird, есть answer already. Несмотря на то, что он нацелен на скольжение 2.x, он должен работать на slick 3.x

Вы пробовали? У вас есть какие-либо ошибки?

Тем не менее, логика это то же самое, попробовать что-то возвращение, и принять метод на Java try/catch или в Скале Try

+0

Я ищу универсальное решение, которое я мог бы использовать везде, как вспомогательный метод, который это сделает. –

+0

Я не думаю, что он существует. Вы можете вызвать проблему в [github repo] (https://github.com/slick/slick), чтобы они могли рассмотреть ее в будущих выпусках. Иначе, только если вы создадите ... – pedrorijo91

Смежные вопросы