hibernate中HQL动态构造对象问题

隐藏起来 2010-10-26 11:21:53
如果hibernate要查询两个表,比如A,B,其中A,B对应有javabean,HQL对返回结果怎么动态构造对象?
如果不行,怎么处理这个问题?
...全文
196 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
微甜灬呼吸 2010-10-26
2表xml里建立1对1或1对多关系

回复
closewbq 2010-10-26
这么处理:
首先你查询两个表,得到一个list。
然后遍历。
for(Object obj:list){
Object[] arr=(Object[])obj;
//获取其中的属性就是:arr[下标];
//你可以创建一个A和B的所有属性对应的实体类,然后set进去。
}
回复
ClicShan 2010-10-26
问楼下的!
回复
BearKin 2010-10-26
[Quote=引用 6 楼 dchua123 的回复:]

引用 5 楼 bearkin 的回复:
引用楼主 dchua123 的回复:
如果hibernate要查询两个表,比如A,B,其中A,B对应有javabean,HQL对返回结果怎么动态构造对象?
如果不行,怎么处理这个问题?


不太明白你说的构造对象是什么意思 如果是指在HQL里使用构造器的话 你倒是可以参考下Hibernate中文手册里的关于HQL的那一章

类似这种东东,但……
[/Quote]

查询两个实体的话 返回的就是一个数组 当然如果你看了我说的帮助文档的话 你就可以通过构造器将两个对象放到一个对象里 或者照着9L说的做
回复
closewbq 2010-10-26
[Quote=引用 4 楼 dchua123 的回复:]
引用 2 楼 closewbq 的回复:
这么处理:
首先你查询两个表,得到一个list。
然后遍历。
for(Object obj:list){
Object[] arr=(Object[])obj;
//获取其中的属性就是:arr[下标];
//你可以创建一个A和B的所有属性对应的实体类,然后set进去。
}


List list = query.list();
fo……
[/Quote]
首先你通过
List list = query.list();得到一个list。
list的集合中,包含了两个表的字段信息的记录。
for(Object obj:list){
Object[] arr=(Object[])obj;//这样,每个arr,就是一条记录,包含了两个表的信息。
for(Object o:arr){
System.out.println(o);//这样你输出的就是一行记录中,每个字段的信息。
//如果想组装成javaBean。那么你把A和B两个表的属性,建立成一个类C,在这里,直接c.setXXX(o);就可以了
}
}
回复
隐藏起来 2010-10-26
[Quote=引用 7 楼 yangxuebao123 的回复:]
我告诉你一个方法,新建一个表单,用于显示数据,当然包括A表和B表的数据..

你哪个新建的表单里面必须有带参数的构造函数.


select new 包名.方法名(a.id,b.id) from A a, B,b where a.id = b.id
[/Quote]
这个能说详细点么?
回复
yangxuebao123 2010-10-26
我告诉你一个方法,新建一个表单,用于显示数据,当然包括A表和B表的数据..

你哪个新建的表单里面必须有带参数的构造函数.


select new 包名.方法名(a.id,b.id) from A a, B,b where a.id = b.id
回复
隐藏起来 2010-10-26
[Quote=引用 5 楼 bearkin 的回复:]
引用楼主 dchua123 的回复:
如果hibernate要查询两个表,比如A,B,其中A,B对应有javabean,HQL对返回结果怎么动态构造对象?
如果不行,怎么处理这个问题?


不太明白你说的构造对象是什么意思 如果是指在HQL里使用构造器的话 你倒是可以参考下Hibernate中文手册里的关于HQL的那一章
[/Quote]
类似这种东东,但这个只能查询一个表,对应一个javabean,两个表就不行
List list = query.list();
Iterator it = list.iterator();
UserInfo admin = (UserInfo) it.next();
回复
BearKin 2010-10-26
[Quote=引用楼主 dchua123 的回复:]
如果hibernate要查询两个表,比如A,B,其中A,B对应有javabean,HQL对返回结果怎么动态构造对象?
如果不行,怎么处理这个问题?
[/Quote]

不太明白你说的构造对象是什么意思 如果是指在HQL里使用构造器的话 你倒是可以参考下Hibernate中文手册里的关于HQL的那一章
回复
隐藏起来 2010-10-26
[Quote=引用 2 楼 closewbq 的回复:]
这么处理:
首先你查询两个表,得到一个list。
然后遍历。
for(Object obj:list){
Object[] arr=(Object[])obj;
//获取其中的属性就是:arr[下标];
//你可以创建一个A和B的所有属性对应的实体类,然后set进去。
}
[/Quote]

List list = query.list();
for(Object obj:list){
Object[] arr=(Object[])obj;
//获取其中的属性就是:arr[下标];
for(int i = 0;i<50;i++)
System.out.println(arr[i]);

}
输出没有看得懂的东西,你能说具体点么?谢谢
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-10-26 11:21
社区公告
暂无公告