Spring SimpleJdbcCall 和 Oracle 同义词

Spring SimpleJdbcCall and Oracle Synonyms

将 Spring 框架从 <4.2.2.RELEASE> 升级到 <5.0.2.RELEASE> 后,我无法使用同义词调用 Oracle 数据库中的存储过程 (SimpleJdbcCall ).我注意到当我的代码开始抛出

无法确定正确的调用签名 - "name of my stored procedure"

没有 procedure/function/signature

例外。然后调试发现存储过程在同义词后面是找不到的。使用旧的 Spring 版本这不是问题。那么他们改变了什么,我现在可以做什么?我阅读了有关从数据源检索原始 Oracle 连接并在那里激活同义词标志的信息:https://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleConnection.html#setIncludeSynonyms_boolean_

但在我看来这不是 "beautiful" 解决方案...

因为我没有找到任何其他解决方案,所以我从 SimpleJdbcCall 切换到通常的 Spring JdbcTemplate 并使用

调用我的存储过程
private jdbcTemplate = new JdbcTemplate(myDataSource);
try{
  CallableStatement callableStatement = jdbcTemplate.getDataSource().getConnection().prepareCall("{call PACKAGE_NAME.STORED_PROCEDURE_NAME}");
  callableStatement.executeUpdate();
} catch(SQLException e)
{
...
}

当时效果不错。

更新:问题已在 Spring 5.0.4.RELEASE 中修复,请考虑 https://jira.spring.io/browse/SPR-16478