今天遇到这样一个问题:
有两个实体类
//学生 public class Student implements java.io.Serializable { private String studentName; private Department dept; get..... set... } //院系
public class Department implements java.io.Serializable { private String deptName; get..... set... }
在hibernate配置中一个学生与学院的关系是多对一。学生表里有这样几天数据:
stuID | deptID | stuName |
1 | 1 | 张三 |
2 | 李四 |
数据表里的数据如下:
deptID | deptName |
1 | 计算机学院 |
一开始我是这样写的HQL
select s.dept.deptName,s.studentName
from Student s
但是返回的结果只有第一条记录。
查看控制台输出的sql语句,hibernate是这样转换的:
select s.stuname,d.deptname
from student s,deptment d
where s.deptid=d.deptid
这也就是为什么查询结果只返回第一条学生记录。
将HQL只能这样来写:
from Student s