1. 程式人生 > >hibernate將普通查詢的sql結果集轉成物件列表

hibernate將普通查詢的sql結果集轉成物件列表

在ssh2開發中遇到,資料庫中並沒有設定表的外來鍵關係,用hibernate的hql就不能達到關聯查詢的效果。

現在只能寫sql關聯,再寫程式碼把結果集轉成物件列表 。

現在用     SQLQuery.addEntity()方法可以實現hibernate自動把結果集轉成物件列表。

StringBuffer sql = new StringBuffer();

        
        sql.append("SELECT a.* FROM T_MB_Account a ");
        sql.append("LEFT JOIN t_user_users u ON u.ID=a.UserID ");
        sql.append("WHERE 1=1 ");
        if(accountName.length()>0 && userName.length()==0){
            sql.append("and a.accountName like '%").append(accountName).append("%'");
        }else if(accountName.length()==0 && userName.length()>0){
            sql.append("and u.name like '%").append(userName).append("%'");
        }else if(accountName.length()>0 && userName.length()>0){
            sql.append("and (a.accountName like '%").append(accountName).append("%'");
            sql.append("or u.name like '%").append(userName).append("%'").append(")");
        }
        sql.append(" order by a.accountId");
        
        SQLQuery sQLQuery = session.createSQLQuery(sql.toString());
        sQLQuery.setFirstResult(firstResult);
        sQLQuery.setMaxResults(maxResults);
        
        //把sql的查詢結果 插入到物件----list<Object[]>形式儲存
        sQLQuery.addEntity("a", TMbAccount.class);
        

        List<TMbAccount> lst = sQLQuery.list();

     sQLQuery.addEntity("a", TMbAccount.class);是關鍵,TMbAccount是要轉換的物件,當然TMbAccount的對映也是要配置好的