一对多

1.正常取出所有的数据

128.HQL语句

2.只查询其中某几个栏目

128.HQL语句

以上查询方法获取的classesList并不是classes对象的集合,因为栏目对不上,缺少栏目。

所以如果想只查某几个栏目,需要在实体类中新建一个只有这几个栏目的构造函数。

注意:默认的空构造函数必须有。

128.HQL语句

HQL语句也要发生相应的变化。

128.HQL语句

即在hql语句中构造一个对象。这种写法称为投影查询

3.一对多的等值连接

128.HQL语句

128.HQL语句

作用:查询出所有有学生的班级,并级联到一张表显示。

SQL语句就是:select c.*,s.* from Classes c,Student s where c.cid=s.cid;

而等值连接又相当于内连接,所以SQL语句又可以是:

select c.*,s.* from classes c inner join student s on(c.cid=s.cid);   

所以HQL的另一种写法就是:

128.HQL语句

128.HQL语句

 

4.迫切内连接

128.HQL语句

就是在join后加个fetch

等值连接没有迫切的说法。

使用fetch可以来改善结构。

 

5.左外连接

         作用:如:查询出所有班级,并将每个班级的学生查询出来,放在一张表中。

       SQL语句:select c.*,s.* from classes c left outer join student s on(s.cid=c.cid);

128.HQL语句

内存映像:结构不好

128.HQL语句

128.HQL语句

6.迫切左外连接

128.HQL语句

128.HQL语句结构很好

7.需求从班级表(Classes)中查出cname从学生表(Student)中查出sname放入一张表显示。

解决方案:1.新建一个JavaBean如:ClassesView

128.HQL语句

带构造函数的Select语句和Fetch不能共存,只能有一个。

128.HQL语句

 

多对多

  1. 需求:根据班级找出所有学生并根据学生找出所有学生选的课程放入一张表中。

128.HQL语句

128.HQL语句

128.HQL语句

 

相关文章: