2016-02-22 38 views
-3

有人能告訴我什麼是最好的做法是插入與光滑的3.x記錄?最好的做法插入記錄與光滑的3.x

我想要一個插入記錄的簡單模式,並且響應應該是具有更新主鍵值的模型。

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

我要做到以下幾點:

  1. 插入與id屬性
  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層使用一個輔助功能,如果插入失敗,也將返回一個例外?即,如果成功,則返回具有Id的用戶,否則拋出異常。

+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,它應該在光滑3.x

你試過了嗎?你有什麼錯誤嗎?

儘管如此,它的邏輯是相同的,儘量恢復一些東西,擁抱方法上的Java try/catch或在斯卡拉Try

+0

我正在尋找一種通用的解決方案,我可以在任何地方使用,就像一個輔助方法,將執行此操作。 –

+0

我不認爲它存在。您可以在[github回購](https://github.com/slick/slick)上提出問題,以便他們在將來的版本中考慮它。否則,只要你創建... – pedrorijo91