`

2009.11.23——Hibernate(3) hql

阅读更多
2009.11.23——Hibernate(3) hql
inner join 内连接
hql:from Student s inner join s.course c
sql: select s.id,s.name,c.id,c.name from student s,course c on s.course.id=c.id
注意:form Student s inner join s.course c
这个hql语句,将会返回一个包含有Student和Course对象的数组,如下:

String hql="from Student s inner join s.course c ";

       Query query=session.createQuery(hql);         //创建查询

        List list=query.list();                          //执行查询

            Iterator it=list.iterator();
	    while(it.hasNext()){

                  Object[] obj=(Object[])it.next();

                  Student stu=(Student)obj[0];

                  Course course=(Course)obj[1];

                  System.out.println("*********学生信息及其选课信息******************");

                  if(course!=null){

                   System.out.println(stu.getSno()+"\t"+stu.getSname()+"\t"+

                                "课程:"+course.getCname());

                   }else{

                         System.out.println(stu.getSno()+"\t"+stu.getSname()+"\t");

                   };

            }


left outer join 左外连接
hql:select distinct s from Student s left outer join s.course c
sql: select s.id,s.name from student s left outer join course c on s.course.id=c.id
左外连接,以左边的为中心,右边的的补空值,这个可以显示 没有选课的学生的信息

right outer join 右外连接
hql: select c from Student s right outer join s.course c
sql: select c.id,c.name from studnet s right outer join course c on s.course.id=c.id
右外连接,以右边的为中心,左边的补空值,这个可以显示 没有学生选的课程信息
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics