De Clob-instantie is gekoppeld aan de 'oracleConnection' die u gebruikt om deze te maken en de SimpleJDBCCall gebruikt een andere verbinding voor de DB-aanroep. Er zijn twee onafhankelijke sessies vanuit het oogpunt van DB en dat is de reden waarom de clob niet bestaat in de sessie die door SimpleJDBCCall wordt gebruikt.
De verbinding die de SimpleJDBCCall gebruikt, moet worden gebruikt voor het maken van de Clob.
Ik ben erin geslaagd een soortgelijk probleem op te lossen door SQLData te implementeren en de huidige verbinding te extraheren:
Map<String, Object> values = new HashMap<>();
values.put("IN_bean_type", new MyBean());
simpleJdbcCallOperations.execute(values);
MijnBean:
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);
...
}
...
}