Clobインスタンスは、作成に使用する「oracleConnection」に関連付けられており、SimpleJDBCCallはDB呼び出しに別の接続を使用します。 DBの観点からは2つの独立したセッションがあり、それがSimpleJDBCCallによって使用されるセッションにclobが存在しない理由です。
SimpleJDBCCallが使用する接続は、Clobの作成に使用する必要があります。
SQLDataを実装し、現在の接続を抽出することで、同様の問題を解決することができました。
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);
...
}
...
}