`

mysql驱动取别名报Column ×× not found(项目工程由jdk1.4升级1.7)发现

    博客分类:
  • J2EE
阅读更多
从mysql-connector-java-5.0.8-bin.jar升级到mysql-connector-java-5.1.18-bin.jar后,当select语句用到别名的时候报错:Column ×× not found 。
经查原因如下(转自ITEYE的xubindehao兄):
用apache beanutils包对resultSet进行dyanbean转换时发现别名无法识别
跟踪代码时发现mysql的jdbc实现的ResultSetMetaData.getColumnName(int column)方法中是这样的
public String getColumnName(int column) throws SQLException {
if (this.useOldAliasBehavior) {
return getField(column).getName();
}

String name = getField(column).getNameNoAliases();

if (name != null && name.length() == 0) {
return getField(column).getName();
}

return name;
}
其中this.useOldAliasBehavior 在执行过程中是false,也就是说会执行String name = getField(column).getNameNoAliases();方法

按照字面意思理解是从field中取非别名的名称,而Field.getNameNoAliases()的实现如下:

public String getNameNoAliases() throws SQLException {
if (this.useOldNameMetadata) {
return getName();
}

if (this.connection != null &&
this.connection.versionMeetsMinimum(4, 1, 0)) {
return getOriginalName();
}

return getName();
}
其中this.useOldNameMetadata也是false,因为版本号是5.1.29(数据库返回的信息),造成
if (this.connection != null &&
this.connection.versionMeetsMinimum(4, 1, 0)) {
return getOriginalName();
}
可以正常执行,返回结果return getOriginalName();
因此无法正常拿到别名。
可怜xubindehao兄问了良久没有得到有效解决方案,今天受他启发,终于找到办法了,已在他博客后留言相告。
解决方案如下:
连接串加参数:useOldAliasMetadataBehavior=true
示例:
url="jdbc:mysql://10.60.32.80:3306/paper2?characterEncoding=utf-8&useOldAliasMetadataBehavior=true"
ps:这个连接串配置在tomcat/conf/context.xml里面的Resource节点(此条给新手看)。
经测试已经解决了别名问题,希望对大家有帮助。
本文出自 “踏歌时代研发中心” 博客,请务必保留此出处http://targtime.blog.51cto.com/4832227/943295
分享到:
评论

相关推荐

    jdk1.4和jdk1.7版本

    在本压缩包中,提供了两个不同版本的JDK:1.4和1.7,它们分别代表了Java发展过程中的两个重要时期。 **JDK 1.4:** JDK 1.4是在2002年发布的重要版本,它的出现极大地增强了Java的性能和功能。这个版本引入了一些...

    旧版本JDK JDK1.4

    **Java Development Kit (JDK) 1.4:历史、特性与重要性** JDK(Java Development Kit)是Oracle公司发布的用于开发Java应用程序的软件开发工具包,它包含了编译器、调试器、文档和Java运行环境等必要组件。JDK 1.4...

    JDK1.4老版本

    **JDK 1.4 老版本:深入理解早期Java开发环境** 在Java发展历程中,JDK 1.4是一个重要的里程碑,它为后来的Java版本奠定了基础。这个版本发布于2003年,是Java SE(标准版)的一个关键迭代,引入了许多新特性并优化...

    jdk 1.4 旧版 windows zip压缩包

    JDK 1.4是Java历史上的一个重要版本,发布于2004年,它是Java 2平台标准版(J2SE)的一部分。在这个版本中,Java引入了许多新的特性和改进,对于Windows操作系统用户来说,这个版本的JDK在当时的软件开发环境中扮演...

    jdk1.4绿色免安装版

    总结,JDK 1.4绿色免安装版是一个便捷的开发工具,尽管已经有些许年代,但它仍能在旧的项目或特定环境中发挥价值,特别是对于需要兼容旧代码或研究历史版本特性的开发者来说,是一个不可或缺的资源。同时,其引入的...

    JDK1.4老版本.zip

    JDK1.4,全称Java Development Kit Version 1.4,是Java编程语言历史上的一个重要版本,由Sun Microsystems(现已被Oracle公司收购)于2002年2月13日正式发布。这个版本在Java平台上引入了许多关键性的改进和新特性...

    jdk1.4-jdk1.4

    jdk1.4非安装版,可直接在MyEclipse等IDE工具导入jdk相应的版本。希望对你们有用处。

    java 开发工具 jdk 1.4 免安装版

    总的来说,JDK 1.4免安装版是Java开发者的一个便利工具,特别是对于需要在旧项目或特定环境中使用JDK 1.4的开发者,它提供了一个快速部署和使用的途径。尽管当前版本已经较为陈旧,但了解其特性和改进对于理解Java的...

    jdk1.7 jdk1.7 jdk1.7

    不过,仍有一些老项目可能依赖于JDK 1.7,因此兼容性问题需要在升级前仔细评估。 总结,JDK 1.7是Java发展历程中的一个重要里程碑,它的特性改进显著提升了开发效率和代码质量。对于仍在使用Java 7的开发者,理解...

    IBM版 JDK1.4-1.7,通用 Java限制密钥长度策略文件

    替换至%java_home%/jre/lib/security 下,覆盖即可

    jdk1.4源代码

    JDK1.4是Java开发工具包的一个重要版本,它在Java发展历程中扮演了关键角色。这个版本发布于2002年,带来了许多新的特性和改进,为后续版本奠定了基础。在此源代码中,我们可以深入理解Java语言的实现细节,以及Java...

    JDK1.4 JDK1.5 JDK1.6 JDK1.7 JDK1.8

    JCE无限制权限策略文件,下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。将两个jar文件放到%JDK_HOME%\jre\lib\security下覆盖原来文件,记得先备份

    jdk1.4 json包 6个全

    这六个jar文件组合在一起,构成了一个完整的JSON处理环境,特别适合基于JDK1.4的项目使用。通过这些库,开发者可以轻松地在Java程序中解析、创建和操作JSON数据,从而实现与服务器或其他应用程序之间的数据交换。...

    jdk1.4安装文件

    JDK 1.4是Java编程语言的一个重要版本,由Sun Microsystems在2003年发布。它包含了Java运行环境(Java Runtime Environment, JRE)以及开发工具,如Java编译器(javac)、Java应用程序启动器(java)和Java文档生成...

    axis2 jdk1.4用jar

    标题“axis2 jdk1.4用jar”指的是在Java Development Kit (JDK) 1.4环境下使用Apache Axis2的特定版本,因为Axis2是一个基于Java的Web服务框架,它允许开发人员创建、部署和管理Web服务。在这个场景中,可能是指一个...

    jdk1.4 linux版本安装包资源 下载

    之前好些人找我要1.4linux版本,现在分享出来

    JDK1.4中文开发手册

    **JDK 1.4中文开发手册**是Java开发者的重要参考资料,它详尽地阐述了JDK 1.4版本中的各种特性和API。JDK(Java Development Kit)是Java编程语言的核心工具集,包含了编译器、调试器、文档生成工具以及Java运行时...

    jdk1.4绿色版本

    JDK 1.4,也常被称为 JDK 4,是Java平台的一个重要版本,由Sun Microsystems在2002年发布。这个版本引入了许多关键特性,提升了Java语言的性能、稳定性和安全性,为后续的Java版本奠定了基础。"绿色版本"通常指的是...

Global site tag (gtag.js) - Google Analytics