HIBERNATE多表查询DAO方法怎么写?
在HIBERNATE中多表查询的DAO方法怎么写啊?一般单表查询就是GETSESSION().XXX方法。现在多表查询如何表示啊?...
在HIBERNATE中多表查询的DAO方法怎么写啊?一般单表查询就是GETSESSION().XXX方法。现在多表查询如何表示啊?
展开
3个回答
展开全部
刚好在写这个,举个例子给你参考参考:
现有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属性。
我用的就是这种,其他更好的方法暂时就不知道了。
现有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属性。
我用的就是这种,其他更好的方法暂时就不知道了。
展开全部
用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表达式显示即可!
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表达式显示即可!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在HQL上写好即可
例如有AB两个bean,A中有一属性为b(B);那么多表查询的hql即为
FROM A AS a JOIN a.b ....
即可!
例如有AB两个bean,A中有一属性为b(B);那么多表查询的hql即为
FROM A AS a JOIN a.b ....
即可!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询