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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM