Sql 在hibernate中选择空字段
我在hibernate中从包含以下列的employees表中进行了select查询:Sql 在hibernate中选择空字段,sql,oracle,hibernate,Sql,Oracle,Hibernate,我在hibernate中从包含以下列的employees表中进行了select查询: 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 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;
在这张桌子上,
第一条记录的managerid设置为null,之后每个记录的managerid设置为第一条记录的employeeid
当我使用以下代码使用query:(“from employees”)从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());
}
我得到的不是第一张唱片
ID是主键,managerid是指向Employees表(ID)字段的外键。
所有行都有id,但某些行/一行的managerid设置为空。
我的问题是,即使第一个记录managerid设置为null,如何获取所有记录
我必须做什么设置?首先,在hibernate实体中,表中必须有主键列&它必须不为null。否则hibernate无法处理实体,因为它使用主键处理实体。所以空主键会使休眠混淆,所以不允许 如果要获取数据,可以使用hibernate启动本机查询
本机查询引用:Ohh ok。这是hibernate中内部连接与外部连接的经典案例。在这种情况下,您的答案如下:
Query query = session.createQuery("FROM Employee em WHERE em.managerid IS NOT NULL AND em.deptid IS NOT NULL");