Instance Clob terikat ke 'oracleConnection' yang Anda gunakan untuk membuatnya dan SimpleJDBCCall menggunakan koneksi lain untuk panggilan DB. Ada dua sesi independen dari sudut pandang DB dan itulah alasan mengapa clob tidak ada di sesi yang digunakan oleh SimpleJDBCCall.
Koneksi yang digunakan SimpleJDBCCall harus digunakan untuk pembuatan Clob.
Saya telah berhasil memecahkan masalah serupa dengan menerapkan SQLData dan dengan mengekstrak koneksi saat ini:
Map<String, Object> values = new HashMap<>();
values.put("IN_bean_type", new MyBean());
simpleJdbcCallOperations.execute(values);
MyBean:
class MyBean implements SQLData {
...
@Override
public void writeSQL(SQLOutput stream) throws SQLException {
...
Clob clob = ((OracleSQLOutput)stream).getSTRUCT().getJavaSqlConnection().createClob(); //hack to get the current connection
clob.setString(1, "stringValue");
stream.writeClob(clob);
...
}
...
}