在 sql 语句中,内连接有两种写法
select * from student s,teacher t where s.tid=t.tid
select * from studen s inner join teacher t on s.tid=t.tid
sql 语句是针对于数据库表与表中字段来进行编写的,
hql 语句是针对实体类和实体类中的属性名来进行编写的。
所以在使用 hql 语句进行内连接的时候,需要先将实体类创建好,并且确定实体类与实体类之间的关系。
student 实体类中有一下几个字段,其中,teacher 字段的类型是 teacher 实体类
Integer stuid
String stuname
String stuage
Teacher teacher
teacher 实体类中有一下几个字段,其中, studens 字段是 学生的集合
Integer tid
String tname
List<Student> studentsList
hql 语句,查询老师下有那写学生,使用内连接的语句就应该使用一下的写法
Query query = session.createQuery("from Teacher t inner join t.studensList")
List list = query.list()
这样返回的结果是 list 集合中,是一个个的数组,而不是对象,如果想要使用对象进行存储的话,需要使用的是迫切内连接,需要加入关键字 fetch
from Teacher t inner join fetch t.studensList