无法使用JDBCTemplate

时间:2017-07-03 20:13:05

标签: java oracle

需要在Oracle数据库中将超过4000个字节存储到VARCHAR2中。解决方法是在数据库中使用“扩展数据类型”来增加容量。我存储的最多2000个字符,但我插入的特殊字符每个最多3个字节。

http://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF55623

使用SQLDeveloper手动插入或SQL语句正常工作。测试了2000个字符/ 6000字节。

但是,当尝试使用NamedParameterJdbcTemplate插入超过4000个字节的任何字符串时,我收到以下错误:

引起:java.sql.SQLException:ORA-01461:只能插入LONG值才能插入LONG列

这让我相信它是某种类型的驱动问题。我正在使用依赖:

    <dependency>
        <groupId>com.oracle.weblogic</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>10.3.6.0</version>
    </dependency>

代码:

@Override
public Number createRecord(Number incidentId, String type, 
String verbatim, String createdBy) {
     MapSqlParameterSource parameters = new MapSqlParameterSource();
     parameters.addValue(MyConstants.MAP_VERBATIM, verbatim);
     namedTemplate.update(insertRecordSql, parameters, key, new 
     String[]{"VERBATIM_ID"});
     return key.getKey();
}

列定义:

“VERBATIM”VARCHAR2(2000 CHAR)NOT NULL ENABLE

1 个答案:

答案 0 :(得分:1)

你的maven条目看起来很奇怪。您正在尝试使用oracle 12c增强功能,但您仍在使用oracle 10 <version>10.3.6.0</version>中的jar。此外,如果您的jdk高于jdk6,您可能必须使用ojdbc7