在hibernate中选择空字段

时间:2012-10-26 08:34:45

标签: sql oracle hibernate

我在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。

我的问题是即使第一条记录经理设置为空,如何获取所有记录?

我必须做什么设置?

1 个答案:

答案 0 :(得分:0)

首先,在hibernate实体中,必须在表格和表格中包含主键列。它必须不为空。否则,hibernate无法处理实体,因为它使用主键处理它们。所以null主键令人困惑,因此不允许休眠。

如果您想要获取数据,可以使用hibernate触发本机查询。

原生查询参考:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html