2017-07-03 11 views
0

OracleデータベースのVARCHAR2に4000バイトを超えて格納する必要が生じました。この問題を回避するには、容量を増やすためにデータベース上の「Extended Data Types」を使用することでした。私は最大2000文字を格納していますが、挿入する特殊文字はそれぞれ最大3バイトです。JDBCTemplateを使用して拡張VARCHAR2に挿入できません

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

マニュアルのsqldeveloperを使用して挿入または罰金の作品SQL文。 2000文字/ 6000バイトでテストされています。

しかし、4000バイト以上がNamedParameterJdbcTemplateを使用して、任意の文字列を挿入しようとしたとき、私は、次のエラーが表示さ:

によって引き起こさ:ます。java.sql.SQLException:ORA-01461を:だけの挿入のための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

答えて

1

をENABLEあなたのMavenのエントリは奇妙に見える私は、依存関係を使用しています。 oracle 12cエンハンスメントを利用しようとしていますが、あなたはoracle 10 <version>10.3.6.0</version>のjarファイルを使用しています。さらに、jdkがjdk6よりも高い場合は、おそらくojdbc7を使用する必要があります。

+0

これは問題でした。 12.1.3に変更すると修正されました。 – user2480766

関連する問題