【发布时间】:2021-01-05 20:59:19
【问题描述】:
我在单元测试中使用 HSQL 作为 EmbeddedDatabaseType。我已经使用这个查询创建了一个表:
CREATE TABLE Table1 (array1 VARCHAR(256) ARRAY, obj1 VARCHAR(256) );
这是 upsert 查询:
MERGE INTO Table1 USING (VALUES ?, ?) vals(array1, obj1)
ON Table1.obj1 = vals.obj1
WHEN MATCHED THEN
UPDATE SET Table1.array1 = vals.array1
WHEN NOT MATCHED THEN
INSERT (array1, obj1) VALUES (vals.array1, vals.obj1);
这是 PreparedStatementSetter:
private static ParameterizedPreparedStatementSetter<data> preparedStatementSetter() {
return (preparedStatement, data) -> {
JDBCArrayBasic array = new JDBCArrayBasic(data.getY(), type);
preparedStatement.setArray( 1, array);
preparedStatement.setString( 2, data.getX() );
};
}
我正在尝试将一个数组写入数据库,但它给了我这个异常:
Caused by: java.sql.SQLSyntaxErrorException: incompatible data type in conversion
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.setArray(Unknown Source)
谁能告诉我这里缺少什么?
【问题讨论】: