需求:把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装配结果为对象?
以下代码试图让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装配结果为对象?
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);
}
谢谢您的回答。
是的,StudentTeacherNames是为了封装查询结果创建的一个Bean类,实际数据库中不存在这个Entity。
手动装配也是很好的方法,可以解决问题。
就是不知道有没有直接让Hibernate装配的方法……