Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 480|回复: 0

java.sql.SQLException: Column 'class' not found.异常没有找到列

[复制链接]
  • TA的每日心情
    奋斗
    2024-6-6 10:50
  • 签到天数: 750 天

    [LV.10]以坛为家III

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    706216
    发表于 2021-7-19 17:28:36 | 显示全部楼层 |阅读模式

     

     1 /**处理当个对象的 ,rs中要么有一条,要么一条没有。
     2  * @param <T>
     3  */
     4 public class BeanHandler<T> implements ResultSetHandler<T> {
     5     private Class<T> type;
     6     public BeanHandler(Class<T> type){
     7         this.type = type;
     8     }
     9     /**将rs->T t
    10      */
    11     public T handle(ResultSet rs) throws SQLException {
    12         //1使用反射技术创建T类型的对象t
    13         //type ->User.class  
    14         //type.newInstance() “等价于”User user = new User();
    15         T t =null;
    16         try {
    17             t = type.newInstance();
    18             if(rs.next()){
    19                 //User.class ->BeanInfo info
    20                 BeanInfo info = Introspector.getBeanInfo(type);
    21                 //从info中获取所有属性对应的对象(属性类型,属性名称,setXxx和getXxx)
    22                 PropertyDescriptor[] pds = info.getPropertyDescriptors();
    23                 //遍历数组
    24                 for(int i =0;i<pds.length;i++){
    25                     //获得当前t对象的当前属性对应的setXxx(..)
    26                     Method mt = pds.getWriteMethod();
    27                     //获取当前属性的名称 比如:username
    28                     String pname = pds.getName();
    29                     //t.setXxx(rs.getString("属性名称"))
    30                     mt.invoke(t, rs.getObject(pname));
    31                 }
    32             }
    33             return t;
    34         } catch (Exception e) {
    35             e.printStackTrace();
    36         } 
    37         
    38         return t;
    39     }
    40 }

    测试,抛出了异常:
    java.sql.SQLException: Column 'class' not found.
    出错原因是:
    rs.getObject("class");
    数据库的表user表中不存在名称为class的列。
    我们在User类根本没有class,为何会有这一列的出现呢?
    原因是User没有指定父类时,某人是Object的子类,从Object类中继承了class属性,故此
    出现类class列不存在的问题。
    解决办法:

    1 try{
    2 mt.invoke(t, rs.getObject(pname));
    3 }catch (SQLException e) {
    4 continue;
    5 }

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-17 04:28 , Processed in 0.060792 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表