需求:把student表中的name和teacher表中name全部查询出来。
以下代码试图让Hibernate把查询结果自动装配成StudentTeacherNames对象,但报Unknown entity异常。 String sql="select s.name studentName,t.name teacherName from student s,teacher t";
                // ...获取Session对象并开启事务(中略)
Query query = session.createSQLQuery(sql).addEntity(StudentTeacherNames.class);
请问:怎么让Hibernate装配结果为对象?

解决方案 »

  1.   

    返回的是object[]
    StudentTeacherNames这是你自己强加入的一个实体吧
    这并不是hibernate生成的实体,不可能自动封装
    Query query = session.createSQLQuery(sql);
    看可不可以用迭代器封装到StudentTeacherNames实体中
    Iterator it = query.iterator();
    List<StudentTeacherNames> list=new ArrayList<StudentTeacherNames>();
    while (it.hasNext()) {
    Object[] s = (Object[]) it.next();
    StudentTeacherNames stn=new StudentTeacherNames ();
    stn.name=s[0];
    ....
    list.add(stn);
    }
      

  2.   


    谢谢您的回答。
    是的,StudentTeacherNames是为了封装查询结果创建的一个Bean类,实际数据库中不存在这个Entity。
    手动装配也是很好的方法,可以解决问题。
    就是不知道有没有直接让Hibernate装配的方法……
      

  3.   

    hql='select new StudentTeacherNames(studentName,studentName) from(select s.name studentName,t.name teacherName from student s,teacher t)'建一个实体Bean 叫StudentTeacherNames