您可能正在使用Hibernate3.x。Hibernate3.x尝试按列的值
columnName(即列
ResultSetmetaData的原始名称的属性)来检索列的值,而JDBC要求(根据规范)要求按列的值
columnLabel(
AS别名的属性来检索),或者如果不是这样的话,t指定原始列名)。
较旧的JDBC版本尚不清楚
columnName和之间的区别
columnLabel,因此实现Drivers会为两个属性返回相同的值,或者希望
columnName可以检索到值。
IBM更改了此行为,使其符合DB2
9.5驱动程序中的JDBC规范,请参阅本文档。要恢复到旧的行为,您需要将connection属性指定
useJDBC4ColumnNameAndLabelSemantics为
DB2baseDataSource.NO(具有值
2):
解决方法
如果无法更改应用程序以符合新ResultSetmetaData行为,但是需要JDBC
4.0的其他功能,请将useJDBC4ColumnNameAndLabelSemanticsConnection或DataSource属性设置为DB2baseDataSource.NO(2)以保留旧行为。
另一个选择是升级到较新版本的Hibernate(4.x),因为它(至少默认情况下)使用
columnLabel检索值。



