以下代码序列应插入一个新条目并返回它(使用自动生成的 id)。它适用于 PostgreSQL。
val ret = elementTableQuery.returning(elementTableQuery) += Element("Arg1", "Arg2", "Arg3")
抛出的异常是:
JdbcSQLException: Invalid value "2" for parameter "columnIndex" [90008-172] (DbException.java:329)
org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
org.h2.message.DbException.get(DbException.java:169)
org.h2.message.DbException.getInvalidValueException(DbException.java:215)
org.h2.jdbc.JdbcResultSet.checkColumnIndex(JdbcResultSet.java:3088)
org.h2.jdbc.JdbcResultSet.get(JdbcResultSet.java:3116)
org.h2.jdbc.JdbcResultSet.getString(JdbcResultSet.java:279)
ch.xxx.test.data.ElementCreator$.create(InitialDataCreator.scala:199)
如果我删除“返回”部分,该语句也有效(在 porstgreSQL 和 H2 中)。如果我只返回生成的 Id,它也可以工作:
val ret = elementTableQuery.returning(elementTableQuery.map(_.id)) += Element("Arg1", "Arg2", "Arg3")
我发现了一个错误报告(https://github.com/slick/slick/issues/230),它似乎涉及同样的问题,但由于无法复制而被关闭。
我应该打开一个新错误吗?我的查询有什么问题吗?
我感谢任何意见。