db2jcc4.jar无效参数:未知列名(db2jcc4.jar Invalid parameter

2019-08-22 13:35发布

我以前提出以下问题: DB2查询未知列名ERRORCODE = -4460,SQLSTATE = NULL

我们已经从了解到,从文件db2jcc.jar db2jcc4.jar(JCC)改变(通用)解决了这个问题,在我们的开发环境。 问题是,在一个塔tdoesn't工作是较新的一个。 我们不希望我们的司机向后的步骤,无需真正的好原因。 但是,为什么在上面的链接查询是在新的驱动程序无效的原因是不是我的理解。

我们知道的是,列...如果我们把它拿出来的结果迫使一个空的空间,一切正常(除了我们没有得到的数据)。 查询工作在其他环境优良。

我看到一些帖子暗示,这个错误是关系到结果集元数据getColumn()方法是JDBC3和JDBC4之间不一致。 但是,我们什么都没有做此查询未在其他许多疑问正在做特价,至少不至于我们可以告诉。

有谁知道这是什么查询可能会设置做事了吗? 是否有此行为的修复......无论是一些设置或解决方法,或者新的驱动程序?

完整的异常:

com.ibm.db2.jcc.a.SqlException:[JCC] [10150] [10300] [4.3.111]无效参数:未知>列名FILTER_VALUE_DECODE。 ERRORCODE = -4460,SQLSTATE =空处com.ibm.db2.jcc.a.dd.a com.ibm.db2.jcc.a.dd.a(dd.java:660)(dd.java:60)在处com.ibm.db2.jcc com.ibm.db2.jcc.a.ib.a(ib.java:1674)com.ibm.db2.jcc.a.dd.a(dd.java:103) .a.yl.a(yl.java:1625)在com.ibm.db2.jcc.a.yl.getString(yl.java:1468)在com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getString(WSJdbcResultSet的.java:2467)在org.hibernate.type.StringType.get(StringType.java:41)在org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)在org.hibernate.type.NullableType.nullSafeGet( NullableType.java:210)在org.hibernate.loader.custom.CustomLoader $ ScalarResultColumnProcessor.extract(CustomLoader.java:501)在org.hibernate.loader.custom.CustomLoader $ ResultRowProcessor.buildResultRow(CustomLoader.java:447)在组织.hibernate.loader.custom.CustomLoader.getResultColumnOrRow(CustomLoader.java:344)在org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:647)在org.hibernate.loader.Loader.doQuery(Loader.java:745 )在org.hibernate.loader.Loader .doQueryAndInitializeNonLazyCollections(Loader.java:270)在org.hibernate.loader.Loader.doList(Loader.java:2294)... 64多个

Answer 1:

你可能使用Hibernate 3.x的 休眠3.X试图通过他们来检索列的值columnName (也就是ResultSetMetaData属性为列的原始名称),而JDBC要求(按规格),他们被检索columnLabel (属性为AS别名,或如果未指定的原始列名)。

JDBC的旧版本是不是之间的区别完全清楚columnNamecolumnLabel ,因此实现驱动程序要么这两个属性返回的值相同,或预期columnName检索值。

IBM改变了这种行为符合JDBC规范的DB2 9.5驱动程序,请参见本文档 。 要恢复到原来的行为,你需要指定连接属性useJDBC4ColumnNameAndLabelSemanticsDB2BaseDataSource.NO (其值为2 ):

解析度
如果你不能改变你的应用程序,以符合新的ResultSetMetaData行为,但你需要JDBC 4.0的其他功能,设置useJDBC4ColumnNameAndLabelSemantics连接或数据源属性DB2BaseDataSource.NO (2)保留旧的行为。

另一种选择是升级到休眠(4.x版)作为本次更新的版本(至少默认情况下)使用columnLabel用于检索值。



文章来源: db2jcc4.jar Invalid parameter: Unknown column name