Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DB2JDBC破坏了spring命名参数映射_Java_Spring_Db2 - Fatal编程技术网

Java DB2JDBC破坏了spring命名参数映射

Java DB2JDBC破坏了spring命名参数映射,java,spring,db2,Java,Spring,Db2,我们有一个使用spring调用DB2存储过程的应用程序 应用程序在jdbc版本1.XX.XX(和DB2V8)下运行良好。最近对DB2V9的升级使我们转而使用JDBCVersiong3.58.90 然而,这似乎破坏了spring(版本2.5.5)中的命名参数映射。一些以前工作的代码具有调用字符串 call storedproc123(:id,:date) 现在抛出异常 [jcc][t4][10427][12544][3.58.90] Error parsing FLOAT literal val

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

应用程序在jdbc版本1.XX.XX(和DB2V8)下运行良好。最近对DB2V9的升级使我们转而使用JDBCVersiong3.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)

讨论了如何部署同一JDBC驱动程序的多个版本,但是这似乎是一个太多的问题,如果可能的话,我希望避免它。

找到原因,请参阅

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


通过启用标记修复了此问题。

您是否尝试对新数据库手动执行相同的语句?也就是说,你确定这是JDBC的错误吗?是的,手动执行语句是可以的。在进行实际的数据库调用之前会引发此错误。升级后,我试着换成旧的1.XX.XX驱动程序,除了一些关于Unknown元数据的警告外,它似乎工作得很好。