2009.11.23——Hibernate(3) hql
inner join 内连接
这个hql语句,将会返回一个包含有Student和Course对象的数组,如下:
left outer join 左外连接
right outer join 右外连接
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
右外连接,以右边的为中心,左边的补空值,这个可以显示 没有学生选的课程信息