gpt4 book ai didi

scala - Play Anorm 将 scala List 插入到 postgres 文本数组列中

转载 作者:行者123 更新时间:2023-12-04 14:30:54 26 4
gpt4 key购买 nike

我正在尝试将一个 List[String] 插入到 text[] 类型的 postgresql 列中。我相信当您尝试插入任何列表时,Anorm 会将列表的每个成员插入到它自己的列中。我很确定是这种情况,因为我得到了异常:

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

最佳答案

最终解决这个问题的代码是:

def insertList(listName: String, subLists: List[String]): Long = {
DB.withConnection{implicit c =>
SQL"INSERT INTO mailinglists(name, sublists) VALUES($listName, ARRAY[$subLists])"
.executeInsert(scalar[Long] single)
}
}

与原帖不同的是使用了 Anorm 字符串插值 SQL"..."并在多值参数周围添加了 ARRAY[...]。我不确定为什么这会起作用,因为 postgres 异常非常神秘。

关于scala - Play Anorm 将 scala List 插入到 postgres 文本数组列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34444343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com