L'istanza Clob è legata a 'oracleConnection' che usi per crearla e SimpleJDBCCall usa un'altra connessione per la chiamata DB. Esistono due sessioni indipendenti dal punto di vista del DB ed è per questo che il clob non esiste nella sessione utilizzata da SimpleJDBCCall.
La connessione utilizzata da SimpleJDBCCall deve essere utilizzata per la creazione Clob.
Sono riuscito a risolvere un problema simile implementando SQLData ed estraendo la connessione corrente:
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);
...
}
...
}