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

 

 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[i].getWriteMethod();
27                     //获取当前属性的名称 比如:username
28                     String pname = pds[i].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 }

 

转载于:https://www.cnblogs.com/pxffly/p/7575368.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值