0
我从员工表休眠做出选择查询了以下栏目:选择休眠空字段
private int id;
private String firstname;
private String lastname;
private String email;
private String phoneno;
private Date hiredate;
private Jobs jobid;
private Integer salary;
private Integer commpct;
private Employee managerid;
private Departments deptid;
在该表中, 第一个记录有经理ID设置为NULL,之后每一条记录经理ID设为首先记录employeeid;
当我选择使用查询从雇员表数据:使用下面的代码( “FROM EMPLOYEES”):
Query query = session.createQuery("FROM Employee");
List<Employee> employees = query.list();
for(Employee employee:employees){
System.out.println("ID=>"+employee.getId()+"\tFirstName=>"+employee.getFirstname()+"\tLastName=>"+employee.getLastname()
+"\temail=>"+employee.getEmail()+"\tPhoneNO=>"+employee.getPhoneno()+"\tHireDate=>"+employee.getHiredate()
+"\tJob=>"+employee.getJobid().getJobtitle()+"\tMax Salary=>"+employee.getJobid().getMaxsalary()
+"\tPresent Salary=>"+employee.getSalary()+"\tCommission %=>"+employee.getCommpct()+"\tManager=>"+employee.getManagerid().getFirstname()+","+employee.getManagerid().getLastname()
+"\tDepartment ID=>"+employee.getDeptid().getName());
}
异常抛出bcoz第一记录经理ID为空,
然后,我用此查询
Query query = session.createQuery("FROM Employee em WHERE em.managerid IS NOT NULL AND em.deptid IS NOT NULL");
我得到第一条记录以外的记录。
ID是主键,managerid是指向Employees Table(id)字段的外键。 所有行都存在id,但某些行/一行将managerid设置为null。
我的问题是如何获得所有记录,即使第一条记录managerid设置为空?我不得不做什么设置?
我已编辑问题。请看看它。 –
哦,好的。这是hibernate中内部与外部连接的经典案例。在这种情况下,你的答案在这篇文章中:http://stackoverflow.com/questions/1525098/hibernate-default-joining-for-nullable-many-to-one –