关于Hibernate的addEntity()

priestmoon 2010-10-30 04:37:59
需求:把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装配结果为对象?
...全文
881 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
suifeng_0 2010-11-01
  • 打赏
  • 举报
回复
hql='select new StudentTeacherNames(studentName,studentName) from(select s.name studentName,t.name teacherName from student s,teacher t)'

建一个实体Bean 叫StudentTeacherNames
跑跑鱼 2010-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lwlsymbol_ 的回复:]
bean xml
[/Quote]能说清楚点吗
lwlsymbol_ 2010-10-31
  • 打赏
  • 举报
回复
bean xml
priestmoon 2010-10-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kokorenfeng 的回复:]

返回的是object[]
StudentTeacherNames这是你自己强加入的一个实体吧
这并不是hibernate生成的实体,不可能自动封装
Query query = session.createSQLQuery(sql);
看可不可以用迭代器封装到StudentTeacherNames实体中
Iterator it = query.iterator();
List<Stud……
[/Quote]

谢谢您的回答。
是的,StudentTeacherNames是为了封装查询结果创建的一个Bean类,实际数据库中不存在这个Entity。
手动装配也是很好的方法,可以解决问题。
就是不知道有没有直接让Hibernate装配的方法……
kokorenfeng 2010-10-30
  • 打赏
  • 举报
回复
返回的是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);
}

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧