我在employee表中的hibernate中进行了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 Integer commpct;
private Employee managerid;
private Departments deptid;
在这张桌子上 第一条记录将managerid设置为null,然后将每条记录管理器设置为第一个记录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());
}
异常抛出bcoz第一条记录managerid为null,
然后,我使用了这个查询
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。
我的问题是即使第一条记录经理设置为空,如何获取所有记录?
我必须做什么设置?
答案 0 :(得分:0)
首先,在hibernate实体中,必须在表格和表格中包含主键列。它必须不为空。否则,hibernate无法处理实体,因为它使用主键处理它们。所以null主键令人困惑,因此不允许休眠。
如果您想要获取数据,可以使用hibernate触发本机查询。
原生查询参考:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html