为什么合并数组时会出现数据转换错误(更新工作正常)?
// Data conversion error converting
// "'[5, 6]' (B: ""ARR"" INTEGER ARRAY)"
MERGE INTO B
USING VALUES (?) _v(arr)
ON B.id IN(1)
WHEN MATCHED THEN
UPDATE SET arr = _v.arr
WHEN NOT MATCHED THEN
INSERT (arr) VALUES (_v.arr)
// works
UPDATE B
SET arr = ?
WHERE B.id IN(1)
尽管我以相同的方式为更新和合并准备数组,但似乎数组像合并的文本字符串一样被接收:
preparedStatement.setArray(1, connection.createArrayOf("INT", Array(5, 6))
我是否需要在某处为数组添加强制转换或者我做错了什么?
出于性能原因,H2 会立即编译准备好的语句。参数尚未设置,因此在某些情况下 H2 无法确定它们的数据类型。当您创建这样的表时,H2 不
VALUES (?) _v(arr)
知道arr
列的数据类型,并默认采用字符串。在以下情况下,您需要对 JDBC 参数添加显式转换: