查询一个表中的部分字段,查完后要封装成JAVA对象,怎么弄???比如Student.javaString queryString = "select stu.name,stu.no from Student stu";
Query q = this.getSession().createSQLQuery(queryString).addEntity("stu", Student.class);
q.list();出错,"column XXX not found",应该是在封装的时候出错,因为类的属性没有全部查出来又改成String queryString = "select stu.name,stu.no from Student stu";
Query q = this.getSession().createSQLQuery(queryString);
q.list();
出错:强制转换出错。查询返回的是Object,不能强制转换成Student这种情况下,该怎么查啊???

解决方案 »

  1.   

    createSQLQuery 里面的参数 是HQL  不是SQL
      

  2.   

    直接用 List<Student> list=getHibernateTemplate.find(from student)  不就可以了
      

  3.   

    HQL  好像不能限制返回字断吧 写SQL吧
      

  4.   

    你写个hql放进去查个我看看
    String queryString = "select stu.name,stu.no from Student stu";
    Query q = this.getSession().createSQLQuery(queryString);
    q.list();
    查出来object数组以后,循环封装一下,直接强制转换是不行的
      

  5.   

    哦 错了 
     不知道楼主做什么用,是不是可以想下把它封装成MAPselect new Map(a.name as name,a.age as age) from Student s
      

  6.   


        public List<T> listByPage(String queryStr, int offest, int limit) {
            Query query = this.getSession().createQuery(queryStr);
            query.setFirstResult(offest);
            query.setMaxResults(limit);
            List<T> list = query.list();
            return list;
        }
    分页的我都写过
      

  7.   

    这种情况楼主只能再写一个mapping文件,这个mapping文件只有原来的一部分属性,然后重新查询就可以了Session session=HibernateSessionFactory.getSession();
    // String queryString="select userinfo.userid,userinfo.username from UserInfo userinfo";
    String queryString="from UserInfo";
    Query query=session.createQuery(queryString);
    List<UserInfo> list=query.list();
    Iterator<UserInfo> iterator=list.iterator();
    while (iterator.hasNext()) {
    UserInfo userInfo = (UserInfo) iterator.next();
    System.out.println(userInfo.getUsername());
    }
    UserInfo.xml和UserInfo.java都是重新定义的,去掉了password属性
      

  8.   

    运用hql完全可以的。举个例子。user表有id,name,addess,tel字段。现在要查询name和addess字段.
    比如User类在com.bean目录下。String sql = "select new com.bean.User(name,address) from User  ";
    Query query = session.createQuery(sql);
    .........注意要有这个构造器 User(name,address)
      

  9.   

    想要查询完直接返回对象形式的方法
    我的解决办法是 
    public List<Object[]> findOther(){
    List<Object[]> list=session.createQuery("select s.name,s.password from Stu s").list();
    return list;
    }
    然后就直接调用这个list,这个list[0]就是name,list[1]就是password