Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 db2jcc4.jar无效参数:未知列名_Java_Hibernate_Jdbc_Db2 - Fatal编程技术网

Java db2jcc4.jar无效参数:未知列名

Java db2jcc4.jar无效参数:未知列名,java,hibernate,jdbc,db2,Java,Hibernate,Jdbc,Db2,我以前问过以下问题: 我们了解到,从db2jcc4.jar(JCC)到db2jcc.jar(UNIVERSAL)的更改解决了我们开发环境中的问题。问题是不起作用的是新的。我们不想在没有真正好的理由的情况下让我们的司机后退。但是我不明白为什么上面链接中的查询在新驱动程序中无效 我们知道它就是那个列……如果我们通过强制一个空的空格将它从结果中去掉,那么一切都会工作(除了我们没有得到数据)。该查询在其他环境中运行良好 我看到一些帖子暗示这个错误与JDBC3和JDBC4之间的结果集元数据getColu

我以前问过以下问题:

我们了解到,从db2jcc4.jar(JCC)到db2jcc.jar(UNIVERSAL)的更改解决了我们开发环境中的问题。问题是不起作用的是新的。我们不想在没有真正好的理由的情况下让我们的司机后退。但是我不明白为什么上面链接中的查询在新驱动程序中无效

我们知道它就是那个列……如果我们通过强制一个空的空格将它从结果中去掉,那么一切都会工作(除了我们没有得到数据)。该查询在其他环境中运行良好

我看到一些帖子暗示这个错误与JDBC3和JDBC4之间的结果集元数据getColumn()方法不一致有关。但我们在这个查询中并没有做任何其他查询中没有做的特殊事情,至少就我们所知是这样

有人知道这个查询可能会引发什么吗?对于这种行为是否有解决方案…或者是一些设置或解决方法,或者是一个新的驱动程序

完全例外:

com.ibm.db2.jcc.a.SqlException:[jcc][10150][10300][4.3.111]无效参数:未知>列名筛选器\u值\u解码。ERRORCODE=-4460,SQLSTATE=null 位于com.ibm.db2.jcc.a.dd.a(dd.java:660) 位于com.ibm.db2.jcc.a.dd.a(dd.java:60) 位于com.ibm.db2.jcc.a.dd.a(dd.java:103) com.ibm.db2.jcc.a.ib.a(ib.java:1674) com.ibm.db2.jcc.a.yl.a(yl.java:1625) 位于com.ibm.db2.jcc.a.yl.getString(yl.java:1468) 位于com.ibm.ws.rsadapter.jdbc.wsjdbcsresultset.getString(wsjdbcsresultset.java:2467) 位于org.hibernate.type.StringType.get(StringType.java:41) 位于org.hibernate.type.NullableType.nullablesafeget(NullableType.java:184) 位于org.hibernate.type.NullableType.nullablesafeget(NullableType.java:210) 在org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.extract(CustomLoader.java:501) 在org.hibernate.loader.custom.CustomLoader$ResultRowProcessor.buildResultRow(CustomLoader.java:447) 位于org.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多


您可能正在使用Hibernate 3.x。Hibernate 3.x尝试通过列的
columnName
来检索列的值(即列的原始名称的
ResultSetMetaData
属性),而JDBC要求(根据规范)通过
columnLabel
检索列的值(作为别名的
属性,如果未指定,则为原始列名)

较早版本的JDBC并不完全清楚
columnName
columnLabel
之间的区别,因此实现驱动程序要么为这两个属性返回相同的值,要么期望
columnName
检索值

IBM更改了此行为以符合DB2 9.5驱动程序中的JDBC规范,请参阅。要恢复到旧行为,需要将连接属性
useJDBC4ColumnNameAndLabelSemantics
指定为
DB2BaseDataSource.NO
(其值为
2
):

分辨率
如果无法更改应用程序以符合新的
ResultSetMetaData
行为,但需要JDBC 4.0的其他功能,请将
useJDBC4ColumnNameAndLabelSemantics
Connection或DataSource属性设置为
DB2BaseDataSource.NO
(2)以保留旧行为


另一个选项是升级到更新版本的Hibernate(4.x),如下所示(至少在默认情况下)使用
columnLabel
检索值。

如果您解决了旧问题,请发布答案,以防其他人遇到类似问题。我猜您是在使用
columnName
而不是
columnLabel
从结果集中检索值。@WarrenT-不,这是更详细的/a re-a解决那个问题。马克的答案看起来很有希望。我要试试看。