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的映射也是要配置好的

你可能感兴趣的:(Hibernate)