HIBERNATE多表查询DAO方法怎么写?

在HIBERNATE中多表查询的DAO方法怎么写啊?一般单表查询就是GETSESSION().XXX方法。现在多表查询如何表示啊?... 在HIBERNATE中多表查询的DAO方法怎么写啊?一般单表查询就是GETSESSION().XXX方法。现在多表查询如何表示啊? 展开
 我来答
小楠b2
2009-09-07 · TA获得超过104个赞
知道答主
回答量:41
采纳率:0%
帮助的人:0
展开全部
刚好在写这个,举个例子给你参考参考:
现有Student类和Teacher类,Student和Teacher是多对一的关系,Student 类中会有一个Teacher的变量。现在通过Student来查询对应Teacher的Name属性:
部分代码:
String hql="from Student s where s.name= 'xmuchen'";
//hql语句搜索Student表
List list=studentDAO.findBy(hql);
//结果存到list中
if(list.size()>0)
Student student= (Student)list.get(0);
//不为空的话取list的第一值
teacherName=student.getTeacher.getTeacherName();
//通过student获得Teacher的Name属性。

我用的就是这种,其他更好的方法暂时就不知道了。
du瓶邪
推荐于2016-05-03 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2907万
展开全部
用hibernate的自动生成的的dao:
Java code
List results = getSession()
.createCriteria("com.anbo.lzy.TableTerm").add(
Example.create(instance)).list();
log.debug("find by example successful, result size: "
+ results.size());
return results;
} catch (RuntimeException re) {
log.error("find by example failed", re);
throw re;
}
}

把这个改为你对应的实体类:TableTerm instance 就是User
List results = getSession()
.createCriteria("com.anbo.lzy.TableTerm").add(
Example.create(instance)).list();

这就话改下,改为:
List result=getSession().createQuery("select user from User").list();
将result 保存到request中,跳转到页面 用EL表达式显示即可!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wdjhz
2009-09-07 · TA获得超过3529个赞
知道大有可为答主
回答量:2227
采纳率:41%
帮助的人:682万
展开全部
在HQL上写好即可

例如有AB两个bean,A中有一属性为b(B);那么多表查询的hql即为

FROM A AS a JOIN a.b ....

即可!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式