我試圖將一個List [String]插入到text []類型的postgresql列中。我相信當你嘗試插入任何列表時,Anorm將列表的每個成員插入到它自己的列中。我很確定這是事實,因爲我找回例外:玩Anorm插入scala列表到postgres文本數組列
org.postgresql.util.PSQLException: ERROR: INSERT has more expressions than target columns
我想要做的是將整個列表插入爲文本[]。我當前的代碼:
def insertList(listName: String, subLists: List[String]): Long = {
DB.withConnection{implicit c =>
SQL(
"""
INSERT INTO mailinglists(name, sublists) VALUES({listName}, {subLists})
""")
.on('listName -> listName, 'subLists -> subLists)
.executeInsert(scalar[Long] single)
}
}
我試圖走這條路:
ConnectionPool.borrow().createArrayOf("text", subLists.toArray)
但我得到的錯誤:
type mismatch;
found : (Symbol, java.sql.Array)
required: anorm.NamedParameter
所以我使用.toArray解決了轉換列表,但現在我得到「org.postgresql.util.PSQLException:找不到提供的名稱VARCHAR的服務器數組類型」。它插入的列是文本[]。 – plambre
當應該傳遞「varchar」時,是否通過某些類型轉換「VARCHAR」? – plambre
在這裏你可以看到使用「VARCHAR」作爲「sqlType」和jdbcType的模式https://github.com/playframework/anorm/blob/ce5e676ff0317eb3005156bd5717c768b9f8dc40/core/src/main/scala/anorm/ParameterMetaData.scala – plambre