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
これは問題でした。 12.1.3に変更すると修正されました。 – user2480766