源代码:String sql = "insert into sample(id,name,c_text) values(?,?,?)";
getJdbcTemplate().execute(sql, new AbstractLobCreatingPreparedStatementCallback(this.lobHandler){
@Override
protected void setValues(PreparedStatement ps,
LobCreator lobCreator) throws SQLException,
DataAccessException {
ps.setString(1,mySample.getId());
ps.setString(2, mySample.getName());
lobCreator.setClobAsString(ps, 3, mySample.getC_text());
}
});spring配置文件:
<bean id="nativeJdbcExtractor" 
  class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"
  lazy-init="true"/>
<bean id="lobHanler" 
  class="org.springframework.jdbc.support.lob.OracleLobHandler"
  lazy-init="true">
  <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/>
</bean>报错:
oracle.jdbc.driver.ClientDataSupport$$EnhancerByProxool$$9819c34c cannot be cast to oracle.jdbc.driver.OracleConnectionOracleLobCreator needs to work on [oracle.jdbc.OracleConnection], not on [oracle.jdbc.driver.ClientDataSupport$$EnhancerByProxool$$9819c34c]: specify a corresponding NativeJdbcExtractor; nested exception is java.lang.ClassCastException: oracle.jdbc.driver.ClientDataSupport$$EnhancerByProxool$$9819c34c cannot be cast to oracle.jdbc.driver.OracleConnection
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)

解决方案 »

  1.   

    select * from tablename where dbms_lob.instr(colbname,'content',1,1)>0
    这个是查询语句 你看对你有用不
      

  2.   

    补充一点,用JDBC连接的方法能插入,就是插入EMPTY_CLOB()方法
      

  3.   

    OracleLobCreator needs to work on [oracle.jdbc.OracleConnection], not on [oracle.jdbc.driver.ClientDataSupport$$EnhancerByProxool$$9819c34c]: specify a corresponding NativeJdbcExtractor; nested exception is java.lang.ClassCastException:是不是引入的jar有问题? 楼上的4000以上的插入不进去,看看你定义的类型是什么
      

  4.   


    定义的是CLOB,用JdbcTemplate插入低于4000的可以,超过4000就报错,和楼主一样的错,如果插入时用EMPTY_CLOB()就可以插入4000的
      

  5.   

    恭喜楼主把问题解决了
    请问您用的oracle jdbc驱动是什么版本的?