Hibernate中的示例查询

Hibernate中的示例查询,hibernate,criteria,hibernate-criteria,Hibernate,Criteria,Hibernate Criteria,我试图理解Hibernate中的示例查询是如何工作的 deptId是departments表的主键 我最初尝试了以下代码: Dept department = new Dept(); department.setDeptId(3); //department.setDeptName("ABCD"); Criteria criteria = session.createCriteria(Dept.class).add(Example.create(d

我试图理解Hibernate中的示例查询是如何工作的

deptId是departments表的主键

我最初尝试了以下代码:

Dept department = new Dept();
        department.setDeptId(3);
        //department.setDeptName("ABCD");
        Criteria criteria = session.createCriteria(Dept.class).add(Example.create(department));
执行此代码时,结果不会被deptId=3的行过滤,也就是说,SQL查询相当于从Dept表中选择所有记录,其中1=1

但是如果我考虑这个代码:

Dept department = new Dept();
        //department.setDeptId(3);
        department.setDeptName("ABCD");
        Criteria criteria = session.createCriteria(Dept.class).add(Example.create(department));
结果将通过deptName(即ABCD)进行过滤

请告知为什么示例查询的行为是这样的

从中,示例查询(QBE)将忽略主键

对于简单的主键,如果知道PK的值,可以使用
load()
get()

对于复合主键,我同意在QBE中支持主键是必要的。然而,这一要求仍然没有得到满足