使用jdbcTemplate实现向oracle数据库中含有lob字段的表插入数据,代码如下:
jdbcTemplate.update(sql, new AbstractLobCreatingPreparedStatementCallback(lobHandler)...
运行时出现以下错误:
SQL state [99999]; error code [17004]; 无效的列类型; nested exception is java.sql.SQLException: 无效的列类型
原因是update方法的签名是update(String sql, Object… args),其中args应该是sql中的参数对应的参数值,而new AbstractLobCreatingPreparedStatementCallback()创建的对象显然不是我们想要传递的参数值。
解决办法是:把update方法换成execute方法,即:
jdbcTemplate.execute(sql, new AbstractLobCreatingPreparedStatementCallback(lobHandler)...