hibernate將普通查詢的sql結果集轉成物件列表
阿新 • • 發佈:2019-01-23
在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的對映也是要配置好的