DB2 JDBC打破了spring命名参数映射

时间:2010-11-23 02:34:38

标签: java spring db2

我们有一个使用spring的应用程序来调用DB2存储过程。

该应用程序与jdbc版本1.XX.XX(和DB2 V8)一起正常运行。最近升级到DB2 V9使我们转而使用jdbc versiong 3.58.90。

但是,这似乎打破了spring(版本2.5.5)中的命名参数映射。一些以前工作的代码有调用字符串

call storedproc123(:id,:date)

现在用

抛出异常
[jcc][t4][10427][12544][3.58.90] Error parsing FLOAT literal value starting at index 19.  Error Detail:Unexpected character ':' found in FLOAT literal.
...
ERRORCODE=-4463, SQLSTATE=42601
...

有没有人遇到过类似的东西?

提前致谢!

---编辑添加更多信息---

我已经尝试在升级后将旧的jdbc交换回来。该应用程序适用于旧驱动程序,但是我们想要升级到更新版本,因为同一服务器上的另一个应用程序需要这个更新的jdbc,并且很难在我们的服务器上部署相同jdbc的不同版本(我们使用JBoss)。

http://redneckprogrammer.blogspot.com/2009/10/running-multiple-versions-of-oracle.html讨论了如何部署同一个JDBC驱动程序的多个版本,但这似乎太过分了,我想尽可能避免使用它。

1 个答案:

答案 0 :(得分:0)

找到原因,请参阅IBM patch PK87567

...

所有连接:驱动程序代码已得到增强以支持 com.ibm.db2.jcc.DB2ParameterMetaData上的新API: getParameterMarkerNames,返回参数列表 SQL语句中使用的标记名称作为字符串。 如果属性,此方法返回null enableNamedParameterMarkers设置为 DB2BaseDataSource.NOT_SET或DB2BaseDataSource.NO,或者如果 SQL语句中没有命名参数标记。 返回的列表包含唯一的参数标记名称。 如果命名参数标记出现多次 SQL语句,它只会在列表中出现一次 回。 (120191)

...

通过启用标记来解决问题。