jdbcTemplate lob 无效的列类型 17004 99999

使用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)...

你可能感兴趣的:(经验总结)